作者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/m.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