KV使用案例

OrientDB可以用来作为键值数据库,这里使用了超级快的索引。 You can have as many Indexes as you need.

HTTP

OrientDB的REST HTTP协议允许使用HTTP协议和服务器实例通信。OrientDB也支持高度优化的二进制协议,性能更好。

操作

和OrientDB索引交互,使用REST风格的HTTP协议接口,三个方法如下:

  • PUT, 创建或者修改库中的一条记录
  • GET, 从库里查询一条记录。这个接口幂等,急着IE6的URL最多支持2,083字符。其他浏览器支持更长的URL,但是如果你想兼容,还是限制在2,083 字符。
  • DELETE, 从库里删除一条记录

创建一条记录

使用Index-PUT API创建一条记录:

Syntax: http://<server>:[<port>]/index/<index-name>/<key>

Example:

HTTP PUT: http://localhost:2480/index/customers/jay

{
  "name" : "Jay",
  "surname" : "Miner"
}

HTTP响应返回204。

查询一条记录

使用Index-GET API

Syntax: http://<server>:[<port>]/index/<index-name>/<key>

Example:

HTTP GET: http://localhost:2480/index/customers/jay

HTTP响应200,返回JSON格式:

{
  "name" : "Jay",
  "surname" : "Miner"
}

删除一条记录

使用Index-DELETE API

Syntax: http://<server>:[<port>]/index/<index-name>/<key>

Example:

HTTP DELETE: http://localhost:2480/index/customers/jay

HTTP响应200。

详细文档

开始之前,确定OrientDB服务器启动并运行。我们这里使用默认的2480端口进行http通信。使用默认用户"admin"。

创建新的索引

使用OrientDB作为KV存储,需要一个全新的索引,起名"mainbucket"。我们将创建UNIQUE索引,因为key不能重复。如果你想让key重复,可以考虑:

  • 创建NOTUNIQUE索引
  • 索引唯一,值是个文档的数组

创建唯一索引"mainbucket":

> curl --basic -u admin:admin localhost:2480/command/demo/sql -d "create index mainbucket UNIQUE"

响应:

{ "result" : [ 
    { "@type" : "d" , "@version" : 0, "value" : 0, "@fieldTypes" : "value=l" }
  ]
}

存储第一条记录

下面,我们使用HTTP方法插入第一条记录,key是jay,value就是JSON格式的文档:

> curl --basic -u admin:admin -X PUT localhost:2480/index/demo/mainbucket/jay -d "{'name':'Jay','surname':'Miner'}"

响应结果:

Key 'jay' correctly inserted into the index mainbucket.

查询插入的记录

> curl --basic -u admin:admin localhost:2480/index/demo/mainbucket/jay

响应结果:

[{
  "@type" : "d" , "@rid" : "#3:477" , "@version" : 0,
  "name" : "Jay",
  "surname" : "Miner"
}]

注意,返回的格式一直是数组,为了处理同样的key关联多条记录或者使用了NOTUNIQUE索引的情况。 根据返回文档的RID,可以直接查询对应记录。例如:

> curl --basic -u admin:admin localhost:2480/document/demo/3:477

响应结果:

{
  "@type" : "d" , "@rid" : "#3:477" , "@version" : 0,
  "name" : "Jay",
  "surname" : "Miner"
}

删除索引

> curl --basic -u admin:admin localhost:2480/command/demo/sql -d "drop index mainbucket"

响应结果:

{ "result" : [ 
    { "@type" : "d" , "@version" : 0, "value" : 0, "@fieldTypes" : "value=l" }
  ]
}