知乎為什麼不使用 NoSQL 資料庫?
01-15
本末倒置了。如果 horizontal scale 沒達到必需,誰會放棄 ACID 啊?
以知乎的用戶量和寫入量,用mc就能搞定問題吧。畢竟不是微博
根據知乎網的網站性質,用戶來這網站大都是瀏覽信息,如問題、答案等,而相對來說,提問的人並不是很多。用計算機術語也就是說,讀很大,寫相對較少,所以,我認為網站的技術核心是如何提高讀的效率,所以知乎網很可能採用了如redis或memcached等技術,這個和新浪微博類似,新浪微博就是採用redis. 至於寫嘛,採用mysql集群(讀寫分離、分區分表)完全能搞定; 還有一點,我認為是nosql並不是萬能的,它也存在一定的缺陷,如不支持ACID等特性,同時,目前的nosql產品並不是很成熟,各個產品還是存在一定的bug或缺陷,運維方面等一大堆問題,核心業務不可能採用nosql,非核心的,不重要的採用nosql還行
貌似知呼使用了redis,redis是nosql資料庫
傳統關係式資料庫技術最成熟,關注於ACID;而非關係式資料庫技術從一開始出發點就五花八門,象cassandra,hbase等NoSQL關注于海量數據;象mongodb,couchdb,neo4j等NoSQL技術關注於靈活地應用模式;象memcached, redis這樣的key-value為基礎的NoSQL技術關注於時延;象gigaspaces, coherence, eXtreme Scale這樣的以內存網格為基礎的NoSQL技術關注於內存數據容量加上分散式計算能力。資料庫技術類比生態圈,可能沒有最強最好的,但有最合適你的。
我覺得回答『為什麼XX不用NoSQL』,先得解決,『為什麼XX要用NoSQL?』。
查詢效率?鍵值對的查詢自然OK,MongoDB稍複雜的查詢,速度也不盡人意。
水平擴展?還是有很多NoSQL水平擴展很是問題,Redis的主主同步也一直在TODO。MongoDB只能算入門水平,但用過後感覺對傳統的設計模型有太大的改動,很多面上的問題都還未完全解決的情況下,NoSQL還是緩緩好。這可能更多的取決於開發團隊的技術背景吧。沒有什麼必要不必要的問題。NOSQL 或 SQL 都可以搞定的。
以知乎的用戶量,NoSql沒有什麼必要,現在大部分的NoSql也是在被用作緩存吧。而且有一定的記錄丟失。
目前存在一定缺陷,對數據存儲來說不安全,出了問題都不知道咋搞,文檔有限,產品本身也有一定問題,大規模用於生產環境還需要擴展和市場的驗證。
誰跟你說知乎不用NoSql的?
推薦閱讀:
※Cassandra現在的應用前景怎麼樣?
※如何評價InfoQ文章《別再用MongoDB了!》?
※c++ 實時消息系統什麼in-process資料庫比較好? leveldb、LMDB 還是sqlite?
※Mac下如何學習資料庫?