基于键值存储的面向表的抽象层
kvlayer的Python项目详细描述
kvlayer是一个数据库抽象层,为应用程序提供简单的键值存储。出于开发目的,这可以在内存实现或服务器(如[redis](http://redis.io/))上运行;在测试和生产中,这可以切换到关系数据库,如[postgresql](http://postgresql.org/)或集群数据库,如[accumulo](http://accumulo.apache.org/)或[riak](http://basho.com/riak/)。
-
-
``kvlayer``依赖于[yakofig](https://github.com/differo/yakofig/)库来获取其配置信息。配置在传递到应用程序的yaml文件中。这包括一个*存储类型*,指示要使用哪个后端,以及一个*应用程序名*和一个*命名空间*,这两种方法都区分了共享同一数据库的不同应用程序。
``yaml
kvlayer:
storage\u type:local\in memory data store
app\u name:kvlayer
namespace:kvlayer
````
kvlayer api
--
应用程序看到多个kvlayer*表*,它可以实现为具有该概念的数据库的数据库本机表。每行有一个键和一个值。键是python元组,具有一些一致的类型集;元组部分可以是字符串、整数或uuid。值总是python字节字符串。
kvlayer提供四种基本操作。`` put()``将一个或多个键值对写入数据库。`` get()``检索具有已知固定键的键值对。`` scan()``检索键范围内的键值对。`` delete()``删除特定的键。
kvl=kvllayer.client()
kvl.setup的名称空间({'table':(str,)})
写入值
kvl.put('table',('foo',)‘one’,('bar',)‘two’)
kvl.get('table',('foo',))
assert k='foo'
打印v
br/>
k,v in的扫描值
kvl.scan('table',('a',),('e',)):
打印k
打印v
))
```
其他注意事项
——
请参阅[使用Saltstack对Accumulo进行测试](acumulo tests.md)的详细信息。
有关吞吐量测试,请参阅[kvlayer_throughput_tests](https://github.com/differo/kvlayer/blob/0.4.5/kvlayer/tests/test_throughput.py)。
例如,使用各种单节点EC2实例,随机的读/写体验这些速率:
num工人存储读取MB/秒写入MB/秒
124; 93.7 56.5 m1.xlarge
|25 redis 66.9 33.8 m1.xlarge
80研究生34.2 14.4 m1.medium
50研究生33.1 14.1 m1.medium
25研究生30.1 13.7 m1.m1.medium
100 accumulo 17.2| 13.6 m1.large
50 accumulo 21.9 16.0 m1.large
25 accumulo 24.7 16.6 m1.large
todo:收集更多统计信息。
-
-
``kvlayer``依赖于[yakofig](https://github.com/differo/yakofig/)库来获取其配置信息。配置在传递到应用程序的yaml文件中。这包括一个*存储类型*,指示要使用哪个后端,以及一个*应用程序名*和一个*命名空间*,这两种方法都区分了共享同一数据库的不同应用程序。
``yaml
kvlayer:
storage\u type:local\in memory data store
app\u name:kvlayer
namespace:kvlayer
````
kvlayer api
--
应用程序看到多个kvlayer*表*,它可以实现为具有该概念的数据库的数据库本机表。每行有一个键和一个值。键是python元组,具有一些一致的类型集;元组部分可以是字符串、整数或uuid。值总是python字节字符串。
kvlayer提供四种基本操作。`` put()``将一个或多个键值对写入数据库。`` get()``检索具有已知固定键的键值对。`` scan()``检索键范围内的键值对。`` delete()``删除特定的键。
kvl=kvllayer.client()
kvl.setup的名称空间({'table':(str,)})
写入值
kvl.put('table',('foo',)‘one’,('bar',)‘two’)
kvl.get('table',('foo',))
assert k='foo'
打印v
br/>
k,v in的扫描值
kvl.scan('table',('a',),('e',)):
打印k
打印v
))
```
其他注意事项
——
请参阅[使用Saltstack对Accumulo进行测试](acumulo tests.md)的详细信息。
有关吞吐量测试,请参阅[kvlayer_throughput_tests](https://github.com/differo/kvlayer/blob/0.4.5/kvlayer/tests/test_throughput.py)。
例如,使用各种单节点EC2实例,随机的读/写体验这些速率:
num工人存储读取MB/秒写入MB/秒
124; 93.7 56.5 m1.xlarge
|25 redis 66.9 33.8 m1.xlarge
80研究生34.2 14.4 m1.medium
50研究生33.1 14.1 m1.medium
25研究生30.1 13.7 m1.m1.medium
100 accumulo 17.2| 13.6 m1.large
50 accumulo 21.9 16.0 m1.large
25 accumulo 24.7 16.6 m1.large
todo:收集更多统计信息。