在云上开上万个小型独立数据库有什么便宜的方案?

2020-12-30 03:42:04 +08:00
 felixin

我们的情况是这样子的,我们有一个 sass 平台,用户是面向公众,但是会打算邀请一些外部开发者来我们的平台编写系统的插件,然后插件销售会与作者分成。插件基本上会调用平台提供的一些通用能力,然后会允许插件存储和查询它自己生成的数据。

现在问题来了,我们假设平台普通用户有 1000 人,每个普通用户购买了 10 个插件,那么我们就需要为每个用户每个插件创建一个单独的数据库来存放数据,因为用户和插件之间的数据是需要隔离的。

我们不可能真的购买这么多的云数据库,也买不起,目前考虑了这个方案:

在平台 api 层面把数据存储和读取做成接口,作为平台的能力直接提供给插件调用,这样就避免掉创建新数据库的问题。这个方案唯一的问题就是使得插件放弃了数据库丰富的 sql 语句功能,限制了插件的发挥,所以只能算作次选方案。

预估每个用户每个插件产生的数据量不会超过 100mb 。最好的方案还是希望云能支持这样一种单实例多租户隔离的数据库服务,但是没有找到这样的服务提供商。

先谢谢大家了。

5514 次点击
所在节点    数据库
56 条回复
DoctorCat
2020-12-30 16:22:42 +08:00
lz 还要考虑运维成本
40EaE5uJO3Xt1VVa
2020-12-30 17:48:29 +08:00
@DoctorCat 组了三个刀片机装 PVE,成本在 5w 左右,然后拉了一根企业宽带,3w+ ,还给了几个固定的公网 IP,企业宽带用 frp 连接到云上延迟非常稳定。成本就这些,比起业务全上云还更划算。
namelosw
2020-12-30 18:10:09 +08:00
你去 Heroku 搞一个免费的 Postgres, 用 Datagrip 连上之后会发现有几千个“邻居”库, 虽然你打不开, 但是能看到名字. 所以感觉分库是个思路.

Docker 之类的可能太浪费资源了.

---

> 我们假设平台普通用户有 1000 人,每个普通用户购买了 10 个插件,那么我们就需要为每个用户每个插件创建一个单独的数据库来存放数据,因为用户和插件之间的数据是需要隔离的。

感觉你可以再想想, 好像这个情况不需要很多数据库, 只要控制好数据隔离就行了, 除非有啥法律和合同限制. 插件的话看语言, 比如 JS 有 realms, 就可以很容易的 sandbox 用户可以干啥.
DoctorCat
2020-12-30 18:35:11 +08:00
DoctorCat
2020-12-30 18:35:44 +08:00
电力冗余、空调系统呢?
crclz
2020-12-30 18:51:39 +08:00
为啥不给每一个开发者开一个 database ?( Postgres 的"Schema",mongodb 的"database"),在分配给每个开发者一个账户
musi
2020-12-30 19:08:35 +08:00
@felixin 我们也做了一套,是基于 db 来做数据隔离的,阿里云还有个 serverless 版本,就是多租户的,就是一个月七八十,这个我们拿来做用户付费方案了
40EaE5uJO3Xt1VVa
2020-12-30 21:25:52 +08:00
@DoctorCat

身处工业区,确认过了,和旁边玻璃厂 陶瓷厂 易拉罐厂共用一个办公楼和电力系统,完全不用考虑电力冗余,他们停电的损失几十万起步。

机柜放在一个单独屋子里,有空调和风扇。现在秋冬天还好,之前夏天时候,委托同事上班路过到附近干冰厂提两箱干冰辅助降温
viakiba
2020-12-31 09:01:48 +08:00
serverlessdb
abersheeran
2020-12-31 09:42:34 +08:00
@crclz mongodb 的 database 可以允许单实例开启数万乃至数十万个吗?
crclz
2020-12-31 10:33:28 +08:00
@abersheeran 你可以多机啊
abersheeran
2020-12-31 11:12:38 +08:00
@crclz 嗯,我知道集群。不过我的意思是,几万几十万的 database 会不会带来太多不必要的压力?
crclz
2020-12-31 13:04:02 +08:00
@abersheeran 不是集群,不是集群。如果你要开 50000 个 database,那么就拿 10 台机器出来,一台开 5000 个。再说账号也是存放在数据库里面的(由系统自己管理),50000 账号也只是 50000 条记录而已,实际的压力还是要看执行的 SQL 的量。
DoctorCat
2020-12-31 13:52:05 +08:00
@yanzhiling2001 你们老板太省了 🤦‍♂️
abersheeran
2020-12-31 17:12:16 +08:00
@crclz 这样的啊。那看起来 mongodb 的 database 很轻量?我看其他数据库都不推荐开这么多 database 。
SilenceLL
2021-02-07 14:24:32 +08:00
跟我们有点类似,我们之前好像是几百台数据库主机,每台数据库主机放 5000 个用户。每个用户的请求通过配置表路由转发到实际的数据库实例

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/740171

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX