記憶體資料庫從範式上可以分為關係型記憶體資料庫和鍵值型記憶體資料庫。在實際應用中記憶體資料庫主要是配合oracle或mysql等大型關係型資料庫使用,關注效能。
作用類似於緩存,並不注重資料完整性和資料一致性。
基於鍵值型的記憶體資料庫比關係型更容易使用,效能和可擴展性更好,因此在應用上比關係型的記憶體資料庫使用更多。
比較FastDB、Memcached和Redis主流記憶體資料庫的功能特性。
FastDB的特色包括以下幾個方面:
1、FastDB不支援client-server架構因而所有使用FastDB的應用程式必須運行在同一台主機上;
2、fastdb假定整個資料庫存在於RAM中,並且依據這個假定優化了查詢演算法和介面。
3、fastdb沒有資料庫緩衝管理開銷,不需要在資料庫檔案和緩衝池之間傳輸資料。
4、整個fastdb的搜尋演算法和結構是建立在假定所有的資料都存在於記憶體中的,因此資料換出的效率不會很高。
5、Fastdb支援事務、線上備份以及系統崩潰後的自動復原。
6、fastdb是一個以應用程式為導向的資料庫,資料庫表格透過應用程式的類別資訊來建構。
FastDB無法支援Java API接口,這使得在本應用下不適合使用FastDB。
Memcached
Memcached是一種基於Key-Value開源快取伺服器系統,主要用於資料庫的資料高速緩衝,並不能完全稱為資料庫。
memcached的API使用三十二位元的循環冗餘校驗(CRC-32)計算鍵值後,將資料分散在不同的機器上。當表格滿了以後,接下來新增的資料會被LRU機制替換掉。由於 memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是後端的資料庫)需要額外的程式更新memcached內的資料。
memcached具有多種語言的客戶端開發包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
Redis
Redis是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部分場合可以對關聯式資料庫起到很好的補充作用。它提供了C 、Java、Python,Ruby,Erlang,PHP客戶端。
1.MySQL 5
作為當今最受歡迎的開放原始碼資料庫之一,MySQL資料庫為使用者提供了一個相對簡單的 解決方案,適用於廣泛的應用程式部署,能夠降低使用者的TCO。 MySQL是一個多執行緒、結構化查詢語言(SQL)資料庫伺服器。 MySQL的執行效能高, 運作速度快,容易使用。
MySQL包含以下幾個關鍵優勢:
◆ 可靠的效能和服務MySQL向大眾提供所有資料庫伺服器軟體的早期版本,都是利用開放原始碼進行為期幾個月的測試之後才發布作為生產之用。
◆ 易於使用和部署MySQL的結構體系易於定制,運行速度快,其獨特的多儲存引擎結構為企業客戶提供了靈活性, 為資料庫管理系統帶來緊緻性和穩定性,易於部署。
◆ 自由取得原始碼可以隨時存取MySQL原始碼,其策略確保了自由性,避免鎖定某家公司或平台。
◆ 跨平台支援MySQL可用於20多種不同平台,包括主要的Linux系統、Mac OS X、Unix和Windows
◆ 可信賴的開發力量MySQL擁有大量的使用者基礎,也擁有高素質、有經驗的開發團隊。
◆ 滿足企業需MySQL結構體系簡單易用,運作速度極快,能夠處理企業資料庫絕大多數的應用需求。
2008年12月8日,Sun Microsystems公司宣布,正式對外提供MySQL 5.1軟體 —— 這是全球最受歡迎的開源資料庫MySQL的一個極其重要的新版本。 MySQL 5.1 GA版現透過以下三種模式提供,以滿足不同使用者的各種特殊需求:
◆MySQL Community Server - Sun的MySQL 資料庫的免費開源版。這GPL授權的全功能軟體的目標用戶是個人技術用戶,他不需要商業支援或是享有優惠的機上服務。
Apache三劍客:HBase, Cassandra, CouchDB。 HBase的前景最為看好,因為它的開發者眾多且都是頂尖高手。 Cassandra目前有很多否定的聲音。 CouchDB的小而精悍,讚譽很多,將要正式發表的CouchBase融合了MemBase和CouchDB,很令人期待。
HBase和Cassandra都是效法Google的BigTable的基於列的資料庫,它們都是用Java寫的。另外一類似的資料庫是HyperTable,用在一些後台分析,因為它是C 寫的,速度比較快。不過HyperTable有點邊緣,不太流行。這些基於列的開源資料庫目前都比Goolge的BigTable差之少一個數量級
CouchDB是一個文件資料庫。其最大的競爭者是MongoDB。 MongoDB和HBase都採用主從伺服器設計。 CouchDB的伺服器分佈設計和Cassandra類似,Peer to Peer類型的。主從伺服器設計一般能較好的strong consistent,屬於CAP理論中的CP類型。 CouchDB和Cassandra一般認為都是eventual consistent,屬於CAP理論中的AP型態。但其實MongoDB和Cassandra都可以設定成strong consistent或是eventual consistent。
以上所提到的資料庫都支援MapReduce。好像出了HyperTable都支援非主鍵索引。 HBase和strong consistent配置的MongoDB都支援最基本的鎖定(HBase單行鎖定,MongoDB單一文件鎖定),因此可以實作transaction,但實作有點複雜和低效。單就transaction這一點,目前開源NoSQL資料庫沒有做的比較好的。
MongoDB的最大賣點就是不需建立非主鍵索引也能執行很多查詢。但是MongoDB的伺服器分佈設計實在不能讓人恭維,可以說是NoSQL資料庫中最Ugly的實作。
K-V資料庫比較多,而且上面提到的基於列的資料庫和文件資料庫其實也都是K-V資料庫。比較流行的純種K-V資料庫有:
Memcached: 非常流行,不支援持久化
VMWare's Redis: 很流行,新浪和知乎都在用,CP類型。
MemBase: 由許多Memcached的開發者開發,使用sqlite作底層儲存。在社交遊戲中用的比較多, zynga在用,CP類型。
Riak, 分散式實作和CouchDB/Cassandra比較像,AP型別。支援MapReduce。
Linkin's Voldemort, 在K-V中少見的eventual consistent ,AP型別。
TT, TC
純粹基於二維座標索引的是Neo4j。但是現在MongoDB和CouchDB都整合這項特性。
目前CouchDB的開發者成立的公司CouchOne收購了MemBase,將其底層sqlite換成CouchDB推出了CouchBase,引入MapReduce以支援非主鍵索引。 CouchBase暫時還沒有正式發表正式正式版,不過快了。雖然CouchDB是eventual consistent的,但是CouchBase的開發者宣稱CouchBase保持了MemBase的strong consistent特性,具體實現有待以後研究。
如果從成熟的角度來看,比較成熟且十分流行的有CouchDB,Memcached,Redis。
以上是Windows下有哪些類似Redis的記憶體資料庫可供使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!