æ§è¡å¤§æ°æ®[注]项ç®çä¼ä¸é¢å¯¹çå
³é®å³çä¹ä¸æ¯ä½¿ç¨åªä¸ªæ°æ®åºï¼SQLè¿æ¯NoSQL?SQLæçéªäººçä¸ç»©ï¼åºå¤§çå®è£
åºç¡;èNoSQLæ£å¨è·å¾å¯è§çæ¶çï¼ä¸æå¾å¤æ¯æè
ãæ们æ¥çç两ä½ä¸å®¶å¯¹è¿ä¸ªé®é¢ççæ³ã
ä¸å®¶
·VoltDBå
¬å¸é¦å¸ææ¯å®Ryan Betts表示ï¼SQLå·²ç»èµ¢å¾äºå¤§åä¼ä¸ç广æ³é¨ç½²ï¼å¤§æ°æ®æ¯å®å¯ä»¥æ¯æçå¦ä¸ä¸ªé¢åã
·Couchbaseå
¬å¸é¦å¸æ§è¡å®Bob Wiederhold表示ï¼NoSQLæ¯å¯è¡çéæ©ï¼å¹¶ä¸ä»å¾å¤æ¹é¢æ¥çï¼å®æ¯å¤§æ°æ®çæä½³éæ©ï¼ç¹å«æ¯æ¶åå°å¯æ©å±æ§æ¶ã
SQLç»åæ¶é´çèéªï¼å¹¶ä»ç¶å¨è¬ååå±
VoltDBå
¬å¸é¦å¸ææ¯å®Ryan Betts
ç»æåæ¥è¯¢è¯è¨(SQL)æ¯ç»è¿æ¶é´èéªçèå©è
ï¼å®å·²ç»ä¸»å®°äºå åå¹´ï¼ç®å大æ°æ®å
¬å¸åç»ç»(ä¾å¦è°·æãFacebookãClouderaåApache)æ£å¨ç§¯ææèµäºSQLã
å¨æ为主导ææ¯(ä¾å¦SQL)åï¼ææ¶åæ们å¾å®¹æå¿è®°å
¶ä¼è¶æ§ãSQLçç¬ç¹ä¼å¿å
æ¬ï¼
1. SQLè½å¤å 强ä¸æ°æ®ç交äºï¼å¹¶å
许对å个æ°æ®åºè®¾è®¡æåºé®é¢ãè¿æ¯å¾å
³é®çç¹å¾ï¼å 为æ æ³äº¤äºçæ°æ®åºæ¬ä¸æ¯æ²¡ç¨çï¼å¹¶ä¸ï¼å¢å¼ºç交äºæ§è½å¤å¸¦æ¥æ°çè§è§£ãæ°çé®é¢åæ´ææä¹çæªæ¥äº¤äºã
2. SQLæ¯æ ååçï¼ä½¿ç¨æ·è½å¤è·¨ç³»ç»è¿ç¨ä»ä»¬çç¥è¯ï¼å¹¶å¯¹ç¬¬ä¸æ¹é件åå·¥å
·æä¾æ¯æã
3. SQLè½å¤æ©å±ï¼å¹¶ä¸æ¯å¤åè½åç»è¿æ¶é´éªè¯çï¼è¿è½å¤è§£å³ä»å¿«å为主导çä¼ è¾å°æ«æå¯éåæ·±å
¥åæçé®é¢ã
4. SQL对æ°æ®åç°ååå¨éç¨æ£äº¤å½¢å¼ï¼ä¸äºSQLç³»ç»æ¯æJSONåå
¶ä»ç»æåå¯¹è±¡æ ¼å¼ï¼æ¯NoSQLå
·ææ´å¥½çæ§è½åæ´å¤åè½ã
è½ç¶NoSQLçåºç°å¸¦æ¥äºä¸äºå½±åï¼ä½SQLä»ç¶ä¸»å¯¼çå¸åºï¼å¹¶å¨å¤§æ°æ®é¢åèµ¢å¾äºå¾å¤æèµå广æ³é¨ç½²ã
NoSQLç说æ³å¾å«ç³ï¼å¯¹äºæ¬æ¬¡è®¨è®ºï¼æåç¨Rick Cattell对NoSQLçå®ä¹ï¼å³æä¾ç®åæä½(ä¾å¦å¯é¥/æ°å¼åå¨)æç®åè®°å½åç´¢å¼ï¼å¹¶ä¸æ³¨äºè¿äºç®åæä½ç横åå¯æ©å±æ§çç³»ç»ã
å¾æ¾ç¶ï¼ç°å¨å¾å¤æ°çæ°æ®åºå¹¶ä¸æ¯é½ä¸æ ·ï¼è®¤è¯æ¯ç§æ°æ®åºèåçåç以åæ½å¨é®é¢æ¯æåçå
³é®ãNoSQLç主è¦ç¹ç¹ä½¿å
¶æ´éåäºç¹å®çé®é¢ãä¾å¦ï¼å¾å½¢æ°æ®åºæ´éåäºæ°æ®éè¿å
³ç³»ç»ç»çæ
åµï¼èä¸é¨çææ¬æ索系ç»æ´éåäºéè¦å®æ¶æç´¢çæ
åµã
å¨è¿éï¼è®©æ们ççSQLç³»ç»ç主è¦ä¼å¿åå·®å¼ååè½ï¼
* SQLå¯å®ç°äº¤äºæ§ã SQLæ¯ä¸ç§å£°ææ§æ¥è¯¢è¯è¨ãç¨æ·è¯´åºä»ä»¬æ³è¦ä»ä¹(ä¾å¦ï¼æ¾ç¤ºè¿å»äºå¹´ä¸æ份æé´é¡¶çº§å®¢æ·çå°çä½ç½®)ï¼æ°æ®åºå
é¨å°±ä¼æ件ç®æ³å¹¶æå请æ±çç»æãç¸æ¯ä¹ä¸ï¼NoSQLç¼ç¨åæ°MapReduceæ¯ä¸ç§ç¨åºæ§æ¥è¯¢ææ¯ãå¨ç¨æ·æåºè¯·æ±æ¶ï¼MapReduceè¦æ±ç¨æ·ä¸ä»
说åºèªå·±æ³è¦ä»ä¹ï¼èä¸è¦æ±ä»ä»¬éè¿°å¦ä½äº§ççæ¡ã
è¿å¬èµ·æ¥åä¸ä¸ªæ 趣çææ¯å·®å¼ï¼ä½è¿å¾å
³é®ï¼åå å¨äºï¼é¦å
ï¼å£°ææ§SQLæ¥è¯¢æ´å®¹æéè¿å¾å½¢åå·¥å
·ä»¥åç¹å»æ¥åæ建å¨æ¥æ建ãè¿è®©åæå¸ãæä½åã管çè
åå
¶ä»ä¸å
·å¤è½¯ä»¶ç¼ç¨è½åçåå·¥è¿è¡æ°æ®åºæ¥è¯¢;å
¶æ¬¡ï¼æ°æ®åºå¼æå¯ä»¥å©ç¨å
é¨ä¿¡æ¯æ¥éæ©æææçç®æ³ãæ¹åæ°æ®åºçç©çå¸å±ææ°æ®åºï¼æä½³ç®æ³ä»ç¶è½å¤è®¡ç®åºæ¥ãèå¨ç¨åºæ§ç³»ç»ä¸ï¼ç¼ç¨äººåéè¦éæ°è®¿é®åéæ°ç¼ç¨ç®æ³ï¼è¿æ¯é常æè´µä¸å®¹æåºéçè¿ç¨ã
å¸åºç解è¿ä¸ªå
³é®åºå«ãå¨2010å¹´ï¼è°·æ宣å¸é¨ç½²SQLæ¥è¡¥å
MapReduceï¼ä¸»è¦åå
é¨ç¨æ·éæ±æ驱å¨ãæè¿ï¼Facebookåå¸äºPresto(ä¸ç§SQLé¨ç½²)æ¥æ¥è¯¢å
¶PB级HDFSé群ãæ ¹æ®Facebook表示ï¼âéçæ们çä»åºå¢é¿å°PB级ï¼ä»¥åæ们çéæ±ååï¼æ们æ¸
æ¥å°æè¯å°ï¼æ们éè¦ä¸ä¸ªæä¾ä½å»¶æ¶æ¥è¯¢çäºå¨ç³»ç»ãâæ¤å¤ï¼Clouderaä¹æ£å¨æ建Impalaâå¦ä¸ä¸ªåºäºHDFSçSQLé¨ç½²ã
* SQLæ¯æ ååçã è½ç¶ä¾åºåææ¶åä¼æ·»å èªå·±çè¯è¨å°SQLçé¢ï¼ä½SQLçæ ¸å¿æ¯æ ååçï¼è¿æå
¶ä»è§æ ¼(ä¾å¦ODBCåJDBC)æä¾å¹¿æ³å¯ç¨ç稳å®çé¢å°SQLåå¨ãè¿å¸¦æ¥äºä¸ä¸ªç®¡çåæä½å·¥å
·çæç³»ç»ï¼å¯ä»¥å¨SQLç³»ç»ä¹ä¸è®¾è®¡ãçæ§ãæ£æ¥ãæ¢ç´¢åæ建åºç¨ç¨åºã
SQLç¨æ·åç¨åºåå¯ç¨è·¨å¤ä¸ªå端系ç»éå¤ä½¿ç¨å
¶APIåUIç¥è¯ï¼åå°äºåºç¨ç¨åºçå¼åæ¶é´ãæ ååè¿å
许声ææ§ç¬¬ä¸æ¹æåã转æ¢ãå è½½(ETL)å·¥å
·ï¼ä½¿ä¼ä¸å¯ä»¥å¨æ°æ®åºä¹é´ä»¥å跨系ç»ä¼ è¾æ°æ®ã
* SQLå¯æ©å±ã 认为SQLå¿
é¡»çºç²ä»¥è·å¾å¯æ©å±æ§ççæ³ï¼å®å
¨æ¯é误çãå¦åæè¿°ï¼Facebookå建äºä¸ä¸ªSQLçé¢æ¥æ¥è¯¢PB级æ°æ®ãSQLè½å¤é常ææå°è¿è¡æå¿«çACIDä¼ è¾ãSQL对æ°æ®åå¨åç´¢å¼æä¾çæ½è±¡[注]åå
许跨åç§é®é¢åæ°æ®é大å°çä¸è´ä½¿ç¨ï¼è®©SQLå¯ä»¥è·¨é群å¤å¶æ°æ®åå¨ææå°è¿è¡ã使ç¨SQLä½ä¸ºçé¢ç¬ç«äºæ建äºãè§æ¨¡æHAç³»ç»ï¼SQLä¸å¹¶æ²¡æä»ä¹å¨é»æ¢åéå¶å®¹éãé«å¯ç¨æ§åå¤å¶ãäºå®ä¸ï¼ææç°ä»£SQLç³»ç»æ¯æäºå好å横åå¯æ©å±æ§ãå¤å¶å容éæ§ã
* SQLæ¯æJSONã å å¹´åï¼å¾å¤SQLç³»ç»å¢å äºXMLææ¡£æ¯æãç°å¨ï¼éçJSONæ为ä¸ç§æµè¡çæ°æ®äº¤æ¢æ ¼å¼ï¼SQLä¾åºåä¹çº·çº·å å
¥äºJSONåçæ¯æãåºäºç°å¨çµæ´»çç¼ç¨è¿ç¨åwebåºç¡è®¾æ½çæ£å¸¸è¿è¡æ¶é´è¦æ±ï¼æ们å¾éè¦ç»æåæ°æ®ç±»åçæ¯æãOracle 12cãPostgreSQL 9.2ãVoltDBåå
¶ä»æ¯æJSONçæ°æ®åºï¼é常å
·æä¼äºâåçâJSONçæ§è½ã
SQLå°ç»§ç»èµ¢å¾å¸åºä»½é¢ï¼å¹¶ä¼ç»§ç»çå°æ°çæèµåé¨ç½²ãNoSQLæ°æ®åºæä¾ä¸ææ¥è¯¢è¯è¨æç®åçé®å¼è¯ä¹ï¼è没ææ´æ·±å±æ¬¡çææ¯å·®å¼åãç°ä»£SQLç³»ç»æä¾å¯æ©å±æ§çåæ¶ï¼è¿æ¯ææ´ä¸°å¯çæ¥è¯¢è¯ä¹ï¼å¹¶æåºå¤§çç¨æ·å®è£
åºç¡ï¼å¹¿æ³ççæç³»ç»æ´åå深度ä¼ä¸é¨ç½²ã
NoSQLæ´éå大æ°æ®åºç¨ç¨åº
Couchbaseå
¬å¸é¦å¸æ§è¡å®Bob Wiederhold
NoSQLè¶æ¥è¶å¤å°è¢«è®¤ä¸ºæ¯å
³ç³»åæ°æ®åºçå¯è¡æ¿ä»£åï¼ç¹å«æ¯å¯¹äºå¤§æ°æ®åºç¨ç¨åºãæ¤å¤ï¼æ 模å¼æ°æ®æ¨¡åé常æ´éåäºç°å¨ææåå¤ççæ°æ®ç§ç±»åç±»åã
å½æ们è°è®ºNoSQLé¢åç大æ°æ®æ¶ï¼æ们æçæ¯ä»æä½æ°æ®åºè¯»åååå
¥ãä¸è¦å°æä½æ°æ®åºä¸åææ°æ®åºæ··æ·ï¼è¿é常ä¼æ¥ç大éæ°æ®ï¼å¹¶ä»è¿äºæ°æ®è·åå¯è§æ§ã
è½ç¶æä½æ°æ®åºç大æ°æ®çèµ·æ¥ä¸å
·æå¯åææ§ï¼ä½æä½æ°æ®åºé常ä¼åå¨è¶
大éç¨æ·ç大åæ°æ®éï¼è¿äºç¨æ·ç»å¸¸éè¦è®¿é®æ°æ®æ¥å®æ¶æ§è¡äº¤æãè¿ç§æ°æ®åºçæä½è§æ¨¡ä¹è§£éäºNoSQLçå
³é®ç¹æ§ï¼ä¹å°±æ¯ä¸ºä»ä¹NoSQLæ¯å¤§æ°æ®åºç¨ç¨åºçå
³é®çåå ã
NoSQLæ¯å¯æ©å±æ§çå
³é®
æ¯æ¬¡ææ¯è¡ä¸ç»å硬件åå±çæ ¹æ¬æ§è½¬åæ¶ï¼é½ä¼åºç°ä¸ä¸ªæç¹ãå¨æ°æ®åºé¢åï¼ä»çºµåæ©å±å°æ¨ªåæ©å±ç转åæ¨å¨äºNoSQLçåå±ãå
³ç³»åæ°æ®åº(å
æ¬æ¥èªç²éª¨æåIBMçæ°æ®åº)æ¯çºµåæ©å±ãä¹å°±æ¯è¯´ï¼å®ä»¬æ¯éä¸å¼ãå
±äº«ä¸åçææ¯ï¼åªè½éè¿å¢å æ´å¤æè´µç硬件æ¥æ©å±ã
èNoSQLæ°æ®åºæ¯åå¸å¼æ¨ªåæ©å±ææ¯ãå®ä»¬ä½¿ç¨äºåå¸å¼èç¹é(称为é群)æ¥æä¾é«åº¦å¼¹æ§æ©å±åè½ï¼è®©ç¨æ·å¯ä»¥æ·»å èç¹æ¥å¨æå¤çè´è½½ã
åå¸å¼æ¨ªåæ©å±çåæ³é常è¦æ¯çºµååæ³æ´å 便å®ãåä¸å
³ç³»åæ°æ®åºçææè´¹ç¨ä¹è®©äººæèå´æ¥ï¼å 为ä»ä»¬çä»·æ ¼æ¯ææ¯å°æå¡å¨æ¥è®¡ç®ãå¦ä¸æ¹é¢ï¼NoSQLæ°æ®åºé常æ¯å¼æºææ¯ï¼æç
§è¿è¡çæå¡å¨é群æ¶è´¹ï¼èä¸ä»·æ ¼ç¸å¯¹ä¾¿å®ã
NoSQLæ¯çµæ´»æ§çå
³é®
å
³ç³»åæ°æ®åºåNoSQLæ°æ®æ¨¡åæå¾å¤§çä¸åãå
³ç³»å模å¼è·åæ°æ®ï¼å¹¶å°æ°æ®åé
å°å¾å¤ç¸äºå
³èç表ä¸ï¼è¿äºè¡¨éè¿å¤é®ç¸äºåºç¨ã
å½ç¨æ·éè¦å¯¹æ°æ®éè¿è¡æ¥è¯¢æ¶ï¼æéä¿¡æ¯éè¦ä»å¤ä¸ªè¡¨ä¸æ¶é(é常æ¶åæ°ç¾ä¸ªä¼ä¸åºç¨ç¨åº)ï¼å¹¶ç»åè¿äºä¿¡æ¯ï¼åæä¾ç»åºç¨ç¨åºãåæ ·å°ï¼å½åå
¥æ°æ®æ¶ï¼éè¦å¨å¤ä¸ªè¡¨åè°åæ§è¡åå
¥ãå½æ°æ®ç¸å¯¹è¾å°ï¼å¹¶ä¸ï¼æ°æ®ä»¥è¾æ
¢é度æµå
¥æ°æ®åºæ¶ï¼å
³ç³»åæ°æ®åºé常è½å¤ææååå¨ä¿¡æ¯ãç¶èï¼ç°å¨çåºç¨ç¨åºé常éè¦å¿«éåå
¥(å读å)æµ·éæ°æ®ã
NoSQLæ°æ®åºéç¨é常ä¸åç模å¼ãå¨å
¶æ ¸å¿ï¼NoSQLæ°æ®åºå
¶å®æ¯âNoRELâï¼æè
说éå
³ç³»åï¼è¿æå³çå®ä»¬æ²¡æä¾èµäºè¡¨ä»¥å表ä¹é´çèç³»ï¼ä»¥åå¨åç»ç»ä¿¡æ¯ãä¾å¦ï¼ä»¥æ档为导åçNoSQLæ°æ®åºè·åä½ æ³è¦åå¨çæ°æ®ï¼å¹¶éç¨JSONæ ¼å¼æ´åå°ææ¡£ä¸ãæ¯ä¸ªJSONææ¡£å¯ä»¥è¢«ä½ çåºç¨ç¨åºè§ä¸ºä¸ä¸ªå¯¹è±¡ãJSONææ¡£å¯è½ä¼æåè·¨è¶25个表çæ°æ®ï¼å°æ°æ®éæå°ä¸ä¸ªææ¡£ä¸ã
èåè¿äºä¿¡æ¯å¯è½ä¼å¯¼è´ä¿¡æ¯éå¤ï¼ä½ç±äºåå¨å·²ä¸åæ¯ä¸ä¸ªææ¬é®é¢ï¼æ°æ®æ¨¡åçµæ´»æ§ãåå¸æ产çææ¡£çç®ä¾¿æ§ä»¥å读åååå
¥æ§è½æé«ï¼è®©è¿æ为ä¸éçéæ©ã
NoSQLæ¯å¤§æ°æ®åºç¨ç¨åºçå
³é®
éè¿ç¬¬ä¸æ¹(å
æ¬ç¤¾äº¤åªä½ç½ç«)ï¼æ°æ®æ£åå¾è¶æ¥è¶å®¹æææå访é®ãè¿äºæ°æ®å
æ¬ï¼ä¸ªäººç¨æ·ä¿¡æ¯ãå°çä½ç½®æ°æ®ãç¨æ·ç产çå
容ãæºå¨è®°å½æ°æ®åä¼ æå¨äº§ççæ°æ®ãä¼ä¸è¿å¯ä»¥ä¾èµäºå¤§æ°æ®æ¥æ¨å¨å
¶å
³é®ä»»å¡ååºç¨ç¨åºãåæ¶ï¼ä¼ä¸æ£å¨è½¬åå°NoSQLæ°æ®åºï¼å 为è¿ç§æ°æ®åºé常éåç°å¨æ°åçæ°æ®ç±»åã
å¼å人åæ³è¦ä¸ä¸ªçµæ´»çæ°æ®åºï¼å¯ä»¥å¾å®¹æéåºæ°çæ°æ®ç±»åï¼å¹¶ä¸ï¼ä¸ä¼å第ä¸æ¹æ°æ®ä¾åºåçå
容ç»æååçå½±åã大å¤æ°æ°æ°æ®æ¯éç»æåååç»æåï¼å æ¤ï¼å¼å人åä¹éè¦è½å¤ææåå¨è¿äºæ°æ®çæ°æ®åºãç¶èï¼å
³ç³»åæ°æ®åºéç¨çä¸¥æ ¼å®ä¹çåºäºæ¨¡å¼çåæ³è®©å
¶ä¸å¯è½å¿«éæ´åæ°æ°æ®ç±»åï¼å¹¶ä¸å¾ä¸éåäºéç»æåååç»æåæ°æ®ã
æ»ä½æ¥è¯´ï¼éçwebå移å¨åºç¨ç¨åºçå¢å ãæ°çè¶å¿ãç½ä¸æ¶è´¹è
è¡ä¸ºç转å以åæ°çæ°æ®ç±»åçåºç°ï¼è¡ä¸éè¦è½å¤æä¾å¯æ©å±ççµæ´»çæ°æ®åºææ¯æ¥ç®¡çå访é®æ°æ®ãNoSQLææ¯æ¯ææ满足è¿äºéæ±çå¯ä¸å¯è¡è§£å³æ¹æ¡ã
温馨提示:答案为网友推荐,仅供参考