數據庫的防單點故障和分表分庫
通常數據庫是安裝在一臺服務器上,如果服務器DOWN機,則數據服務停止。這樣在生產環境是不合適的,必須部署兩臺以上的服務器且都安裝有相同數據的數據庫。這樣就產生了一個問題,同一份數據在不同的機子上,會導致數據不同步的問題。一般的方案是:服務端:
互責數據同步,一臺服務器專門做寫操作,其他服務器只做讀操作,即主從模式。當主服務器DOWN機時,會在從服務器中選出一臺做主服務器。在MONGODB中叫REPLICATION。
客戶端:
要判斷當前與數據庫的鏈接,如果是讀操作,則使用與從服務器的鏈接,如果是寫操作,則使用與主服務器的鏈接。這樣的判斷一般是由驅動程序去做,配置的時候如果是MYSQL,就要使用REPLYCATION的驅動。
如果數據庫里的某張表數據太多,會導致簡單的查詢會需時過長的問題。一般的方案是限制每張表中不能放太多的數據,如第一個月的數據放一張表,下一個月的數據放第二張表,這種做法稱為SHARDING,分表。但這樣會導致查詢的復雜性,如數據在第二張表,則要具體指明表名,否則查不出數據。目前的數據庫,可以事先指定分表的規則,這樣查詢的語句不需改變,數據庫端會自動判斷數據在哪張表,然后路由到那張表,去查找數據然后返回給客戶端。ORACLE叫分區表,MONGODB叫AUTO SHARDING。
服務端:
需事先指定數據分表規則,這樣收到查詢語句時數據庫就知道數據在哪張表中。
客戶端:
查詢數據時無需再指定分區表名了
posted on 2014-03-23 21:27 paulwong 閱讀(1426) 評論(0) 編輯 收藏 所屬分類: MYSQL 、MONGODB