paulwong

          數(shù)據(jù)庫的防單點故障和分表分庫

          通常數(shù)據(jù)庫是安裝在一臺服務器上,如果服務器DOWN機,則數(shù)據(jù)服務停止。這樣在生產(chǎn)環(huán)境是不合適的,必須部署兩臺以上的服務器且都安裝有相同數(shù)據(jù)的數(shù)據(jù)庫。這樣就產(chǎn)生了一個問題,同一份數(shù)據(jù)在不同的機子上,會導致數(shù)據(jù)不同步的問題。一般的方案是:

          服務端:
          互責數(shù)據(jù)同步,一臺服務器專門做寫操作,其他服務器只做讀操作,即主從模式。當主服務器DOWN機時,會在從服務器中選出一臺做主服務器。在MONGODB中叫REPLICATION。

          客戶端:
          要判斷當前與數(shù)據(jù)庫的鏈接,如果是讀操作,則使用與從服務器的鏈接,如果是寫操作,則使用與主服務器的鏈接。這樣的判斷一般是由驅(qū)動程序去做,配置的時候如果是MYSQL,就要使用REPLYCATION的驅(qū)動。

          如果數(shù)據(jù)庫里的某張表數(shù)據(jù)太多,會導致簡單的查詢會需時過長的問題。一般的方案是限制每張表中不能放太多的數(shù)據(jù),如第一個月的數(shù)據(jù)放一張表,下一個月的數(shù)據(jù)放第二張表,這種做法稱為SHARDING,分表。但這樣會導致查詢的復雜性,如數(shù)據(jù)在第二張表,則要具體指明表名,否則查不出數(shù)據(jù)。目前的數(shù)據(jù)庫,可以事先指定分表的規(guī)則,這樣查詢的語句不需改變,數(shù)據(jù)庫端會自動判斷數(shù)據(jù)在哪張表,然后路由到那張表,去查找數(shù)據(jù)然后返回給客戶端。ORACLE叫分區(qū)表,MONGODB叫AUTO SHARDING。

          服務端:
          需事先指定數(shù)據(jù)分表規(guī)則,這樣收到查詢語句時數(shù)據(jù)庫就知道數(shù)據(jù)在哪張表中。

          客戶端:
          查詢數(shù)據(jù)時無需再指定分區(qū)表名了

          posted on 2014-03-23 21:27 paulwong 閱讀(1426) 評論(0)  編輯  收藏 所屬分類: MYSQLMONGODB

          主站蜘蛛池模板: 平山县| 孝昌县| 喀什市| 天水市| 阳城县| 大荔县| 无极县| 日照市| 南江县| 古蔺县| 剑川县| 西盟| 旬邑县| 峨山| 沙湾县| 广西| 仁怀市| 岑巩县| 中江县| 鹰潭市| 库伦旗| 银川市| 麟游县| 安庆市| 林周县| 浦东新区| 南昌市| 保亭| 常宁市| 久治县| 宣城市| 扶绥县| 汉沽区| 娄底市| 兴和县| 洮南市| 沅江市| 麻城市| 资阳市| 金川县| 琼海市|