NoSql的接口與交互

爲區分NqSQL不同的數據存儲和訪問方式,先分類:

  1. 文檔存儲:MongoDB和CouchDB
  2. 鍵值存儲:(內存裏的,可持久化的,甚至有序的)Redis和BerkeleyDB
  3. 列族存儲:HBase和Hypertable
  4. 最終一致的鍵值存儲:Apache Cassandra和Voldermot

MongoDB可以存儲任意數據集合們只要數據可以用JSON式的對象層次結構表示,還只是BSON,即二進制編碼序列化JSON結構。

Mongo shell命令:db.logdata.insert();或者是用save方法,記錄在集合中存在則更新,沒有則插入。

                                  查詢:var cursor = db.logdata.find()    find中可以添加參數和查詢條件,或者過濾條件,可使用正則表達式

                                             while(cursor.hasNext()) printjson(cursor.next());

遊標或者迭代器在關係型數據庫和MongoDB中很常見。

Redis數據存儲

Redis命令行客戶端(redis-cli):

  1. 啓動redis-cli並確認工作正常,進入redis目錄。
  2. 執行redis-server啓動redis服務器。
  3. 默認配置直接運行./redis-server,接着運行redis-cli連接服務器。redis服務器端口默認是6379。

保存鍵值對:./redis-cli set akey "avalue"

獲取鍵值對:./redis-cli get akey

sadd用來添加集合成員。

redis支持數據結構:

  1. 列表,更準確說是鏈表
  2. 集合
  3. 有序集合
  4. 哈希鍵值對集合
  5. 字符串

redis中鍵的命名體系:object-type:id:field。如books:1:title表示books集合中標識爲1的成員的title字段。

函數incr用來生成集合中第二個成員的標識,遞增。incrby是按指定量遞增,decr遞減,decrby按指定量遞減。

smembers命令列出集合的數據,sinter支持查詢兩個或多個集合的交集。sunion是並集,sidff是差集。

HBase數據存儲

Nosql的旗手,是google bigtable的開源實現,Hadoop工具。

create 集合名,各個列族

put 集合名,集合1,鍵值對

HBase中,數據不可變,即使重複插入數據也不是更新,而是創建數據集的新版本。這樣避免了數據更新的原子性衝突,存儲中內建了隱式的版本系統。

get 集合名 ,數據 1,{查詢條件}

Apache Cassandra數據存儲

bin/cassandra -f啓動服務器

bin/cassandra -cli -host localhost -port 9160運行客戶端

show keyspaces;

建立keyspaces.

語言綁定

  1. Thrift
  2. java
  3. python
  4. ruby
  5. php







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章