这样的需求 数据库怎么设计 最好 ???

2015-12-21 09:58:55 +08:00
 wlee1991

一个 mysql 数据库

同时服务于 1000 家公司

每家公司都是多用户,多权限,但是各家公司数据不相互影响

最初的想法是为每家公司都设置一个 companyID ,这样的话所有数据库的操作都要带上 companyID ,有没有更优的设计?

查过一些资料,貌似还要考虑表锁定、行锁定

请 architecture 高手帮忙指点多谢

1214 次点击
所在节点    数据库
12 条回复
klesh
2015-12-21 10:38:33 +08:00
各自独立的库
heaton_nobu
2015-12-21 10:46:24 +08:00
除了账户外其他还有什么数据?需要共用吗?
wy315700
2015-12-21 10:57:20 +08:00
每个公司一个数据库,
aisk
2015-12-21 10:58:00 +08:00
每个公司开个新库?
lynnworld
2015-12-21 11:00:26 +08:00
每个公司一个独立数据库, wordpress.com 就是这样。扩容也方便。统计性的工作通过数据冗余到一个额外独立数据库上。
wlee1991
2015-12-21 12:32:51 +08:00
@wy315700
@aisk
@lynnworld

假如 1000 家公司,后台用 Hibernate 同时连接 1000 个数据库?这样量大了以后假如 1 万家,就有 1 万个连接,性能等等要考虑吗
loading
2015-12-21 12:36:45 +08:00
独立数据库
最起码也要表分开,用户名分开,设置好权限。
wy315700
2015-12-21 12:37:04 +08:00
@wlee1991 上中间件
loading
2015-12-21 12:37:57 +08:00
如果访问量不大,写个 api ,方便很多。
NetCobra
2015-12-21 14:02:30 +08:00
@wlee1991 你要只有几个公司,一个库里面用 ID 区分每个用户没问题;真要到了 1000 家公司,一个数据库是绝对撑不住的。

每个公司一个库,在技术上是更好的方案,但是成本也会是很高的;不过你如果真的有 1000 家公司成为你的客户,这个成本是绝对值得付出的。

所以考虑一下你现在是否真的要为 1000 个公司的时候做准备,屠龙刀很好,但是用来杀鸡实在没有必要。
billwang
2015-12-22 00:02:16 +08:00
一千家公司?只是网站应用吗?如果是业务应用,劝你还是分库或者用 Oracle 等数据库的好。
darluc
2015-12-24 22:56:14 +08:00
# 根据数据量大小选择分表或分库。
# 根据公司 ID 进行路由选择。
# 想要把各自的东西分清楚,最简单的方式就是别把它们堆放在一起。

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

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

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

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

© 2021 V2EX