基于键值存储的面向表的抽象层

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.medium100 accumulo 17.2| 13.6 m1.large
50 accumulo 21.9 16.0 m1.large
25 accumulo 24.7 16.6 m1.large

todo:收集更多统计信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring框架服务单元测试   在Java中遍历hashmaps的hashmap以检索字符串值   如何使用CodeQL检查Java注释是否具有特定属性?   java为什么在Spring Boot中访问此资源而不是登录弹出窗口需要始终获得完全身份验证   处理将多集计数转换为列表的过程   java另一个线性布局,没有出现按钮   eclipse Java映像加载未显示在jar中   java Junit类无法加载基本测试类ApplicationContext   java如何在main中使用my getvalues()方法打印列表   java Sonar,S128:切换案例应该以无条件的“中断”语句结束,而不是继续   java从socket读取字符串错误连接重置错误   java使用新数据刷新任意图表饼图   java通过异步运行lambda访问方法参数   java错误的结果一旦我处理try and catch