作者:
groza (狗煞)
2018-10-08 11:07:53各位先進 打給賀
小弟有幸進入一間流量還算大的公司
看完幾個主要的DB後些問題想請問各位大大
他們將許多資料表再拆成許多庫
例如:
DBUser
-user_users
-user_config
-user_logs
DBProduct
-prod_items
-prod_category
-prod_log
目測總資料庫大約有十來個
表約近百張
請問這樣的設計和將全部表放在同個DB內有何差異?
作者: acer1832a (Mike) 2018-10-08 11:18:00
安全,避免誤刪。我有看過有兩個系統用同一個資料庫用Table的prefix去區分;結果其中一個系統在做debug時把所有Table都刪了,刪完才想到有另一個系統的資料
作者:
testPtt (測試)
2018-10-08 11:29:00通常是不需或不希望用join的資料
作者:
qrtt1 (有些事,有時候。。。)
2018-10-08 11:56:00聽起來像 event sourcing 與 CQRS 架構
作者:
alihue (wanda wanda)
2018-10-08 12:02:00流量算大,那分開來有助於效能提升舉例來說,全部有10億筆datauser_users 只有1000筆,那我要拿裡面的 data還要先從 10 億中去找到其中的 user
分開才是正常的吧... 合在一起要不是資料太少不然就塞康如果同樣的資料量全放在一起,會慢又難維護又超多index
作者: zo4j4 (happiness) 2018-10-08 14:17:00
感覺沒有一個專業dba的答案欸…XD
作者:
neo5277 (I am an agent of chaos)
2018-10-08 14:33:00分庫分表又名藍色蜘蛛網這種架構滿適合做成CQRS然後走API針對的是資料本身吧金融業跟資料為主的常這樣做
作者:
mintu (MinTu)
2018-10-08 18:03:00蠻好奇如果這是在某些情況中蠻常見的架構,在開發環境中一樣要有同樣的架構嗎?還是可以由設定去做要讀哪個 DB 就好
九成以上都是效能考量為主啊,高流量下單一DB容易打到掛點吧,主要也都使用高速可完成的sql,商業邏輯複雜度都靠後端程式碼解決開發環境不是問題啊,一定是設定檔host+db_name,開發環境下host相同就好
作者: AvatarH (Avatar Hsieh) 2018-10-09 17:39:00
請問在不同資料庫之間的table可以join或union嗎?
作者:
mathrew (Joey)
2018-10-10 07:44:00可以啊
不同資料庫可以做join,藉這個題往下問一個問題,實務上會直接在SQL跨db join還是拉到orm做join?(ex.EF+LINQ)
作者:
neo5277 (I am an agent of chaos)
2018-10-10 16:28:00我是都orm做
分散式運算,主要是可能有很多不同站點但服務是一樣的你又想要讓他們所有資料總結,就會設很多個db,設計大概會是資料進去以後固定TRIGGER或跑PROCEDURE分別在抓到別的表格上面去做總結查詢某些資料的話就設計個動態db去另外一個db查詢,這樣整個效率會高非常多又簡單,大概是這樣
作者: zo4j4 (happiness) 2018-10-11 19:00:00
樓上正解