作者groza (狗煞)
看板Soft_Job
标题[请益] 一个以上的db
时间Mon Oct 8 11:07:53 2018
各位先进 打给贺
小弟有幸进入一间流量还算大的公司
看完几个主要的DB後些问题想请问各位大大
他们将许多资料表再拆成许多库
例如:
DBUser
-user_users
-user_config
-user_logs
DBProduct
-prod_items
-prod_category
-prod_log
目测总资料库大约有十来个
表约近百张
请问这样的设计和将全部表放在同个DB内有何差异?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.39.205
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1538968075.A.881.html
1F:推 acer1832a: 安全,避免误删。我有看过有两个系统用同一个资料库 10/08 11:18
2F:→ acer1832a: 用Table的prefix去区分;结果其中一个系统在做debug时 10/08 11:19
3F:→ acer1832a: 把所有Table都删了,删完才想到有另一个系统的资料 10/08 11:20
4F:→ testPtt: 通常是不需或不希望用join的资料 10/08 11:29
5F:推 sweet00914: 风险及效能考量 10/08 11:34
6F:→ qrtt1: 听起来像 event sourcing 与 CQRS 架构 10/08 11:56
8F:→ alihue: 正确答案可能依每家资料库而不同 10/08 12:03
9F:→ f496328mm: 流量算大,那分开来有助於效能提升 10/08 12:47
10F:→ f496328mm: 举例来说,全部有10亿笔data 10/08 12:47
11F:→ f496328mm: user_users 只有1000笔,那我要拿里面的 data 10/08 12:48
12F:→ f496328mm: 还要先从 10 亿中去找到其中的 user 10/08 12:48
13F:→ alan3100: 分开才是正常的吧... 合在一起要不是资料太少不然就塞康 10/08 13:16
14F:→ alan3100: 如果同样的资料量全放在一起,会慢又难维护又超多index 10/08 13:18
谢谢各位大大的解说
※ 编辑: groza (114.32.39.205), 10/08/2018 13:33:59
15F:推 zo4j4: 感觉没有一个专业dba的答案欸…XD 10/08 14:17
16F:推 neo5277: 分库分表又名蓝色蜘蛛网 10/08 14:33
17F:→ neo5277: 这种架构满适合做成CQRS然後走API 10/08 14:34
18F:→ neo5277: 针对的是资料本身吧金融业跟资料为主的常这样做 10/08 14:35
19F:→ mintu: 蛮好奇如果这是在某些情况中蛮常见的架构,在开发环境中一 10/08 18:03
20F:→ mintu: 样要有同样的架构吗?还是可以由设定去做要读哪个 DB 就好 10/08 18:03
21F:推 ripple0129: 九成以上都是效能考量为主啊,高流量下单一DB容易打 10/08 19:38
22F:→ ripple0129: 到挂点吧,主要也都使用高速可完成的sql,商业逻辑复 10/08 19:38
23F:→ ripple0129: 杂度都靠後端程式码解决 10/08 19:38
24F:→ ripple0129: 开发环境不是问题啊,一定是设定档host+db_name,开发 10/08 19:39
25F:→ ripple0129: 环境下host相同就好 10/08 19:39
26F:推 banqhsia: 还有依照帐号名称分表的勒 10/08 22:50
27F:→ AvatarH: 请问在不同资料库之间的table可以join或union吗? 10/09 17:39
28F:推 mathrew: 可以啊 10/10 07:44
29F:→ forewero: 不同资料库可以做join,藉这个题往下问一个问题,实务上 10/10 15:05
30F:→ forewero: 会直接在SQL跨db join还是拉到orm做join?(ex.EF+LINQ) 10/10 15:05
31F:推 neo5277: 我是都orm做 10/10 16:28
32F:→ THEWORLDS: 分散式运算,主要是可能有很多不同站点但服务是一样的 10/10 18:31
33F:→ THEWORLDS: 你又想要让他们所有资料总结,就会设很多个db,设计大 10/10 18:31
34F:→ THEWORLDS: 概会是资料进去以後固定TRIGGER或跑PROCEDURE分别在抓 10/10 18:32
35F:→ THEWORLDS: 到别的表格上面去做总结 10/10 18:32
36F:→ THEWORLDS: 查询某些资料的话就设计个动态db去另外一个db查询,这 10/10 18:32
37F:→ THEWORLDS: 样整个效率会高非常多又简单,大概是这样 10/10 18:33
38F:推 zo4j4: 楼上正解 10/11 19:00