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







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