基于leveldb后端的磁盘密钥/值存储

Elevator的Python项目详细描述


http://dl.dropbox.com/u/2497327/baneer.png

用python编写的基于leveldb的键值存储允许高性能的磁盘批量读写。

允许异步、多线程和/或远程访问多级数据库后端。

它依赖于zeromq网络库和msgpack序列化格式,可以在语言和 平台。

有关详细信息,请参见Documentation

取决于

  • zmq-3.x
  • PYZMQ(用ZMQ-3.x制造)
  • 级别数据库
  • 请稍候

安装

简单的方法:

pip install elevator

黑客之路:

$ pip install fabric
$ fab build
$ pip install -r requirements.txt
$ python setup.py install

使用量

安装电梯后,可以使用电梯可执行文件启动服务器。 注意–daemon选项是一次性的,允许您作为守护程序运行电梯服务器, 将PID存储在.pid文件中的/tmp

有关电梯配置的示例,请参见config/elevator.conf

示例

$ elevator --help
usage: elevator -h

Elevator command line manager

optional arguments:
    -h, --help       show this help message and exit
    -d, --daemon      Launch elevator as a daemon
    -c, --config      Path to elevator server config file, eventually
    -t, --transport   Transfert protocol (tcp | ipc)
    -b, --bind        Ip to bind server to
    -p, --port        Port the server should listen on
    -w, --workers     How many workers should be spawned (Threads with concurrent access to all the db store)
    -P, --paranoid    If option is set, Elevator will shutdown and log on first unhandled exception

客户

pythonpy-elevator

gogo-elevator(早期,所以早期版本)

clojurecoming soon

ccoming soon

谢谢

感谢srinikom为其leveldb-server这是一个非常好的基础开始。

N.N.N/2013-02-01

  • Remove: legacy setup_loggers function
  • fix #123: exposing a database object
  • ref #123: Renamed DatabasesHandler to DatabaseStore
  • Fix: elevator benchmarks
  • Fix: supervisor test should remove their tests files
  • Add: tests for backend atm
  • Add: backend supervisor tests + fixes
  • update: enhance backend majordome management
  • fix #125: backend does not instantiate it’s own DatabasesHandler anymore
  • Fix: elevator tests fakers now uses a clear files/dirs pattern
  • Update: more obvious DatabaseHandler args names
  • Add: benchmarks using hurdles and pyelevator
  • update #120 : Auto re-mount unmounted database on new requests
  • Fix : backend properly tears down workers
  • fix #120, fix #91: Implement Majordom watcher thread
  • Update #120: set databases last access marker
  • Update 120: move ocd worker to backend module
  • Update #121: implement last activity action on workers
  • Update #121: Documented worker
  • Update #121: Workers poll to reduce cpu usage + backend refactoring
  • Update #121: use an internal message protocol between supervisor and workers
  • Update: Moved the backend elements in their own module
  • Fix #122: workers now set their processing state
  • Refactor: moved loggers init in their own log module
  • Update #121: fixed workers stop action
  • Update #121: Added constants to normalize interaction with workers
  • Add #121: basic workers supervisor implementation, implies a lot of refactoring
  • Update: rename server poller
  • Update: use ROUTER/DEALER terminology and rename workerpool and proxy to backend and frontend
  • Update: renamed conf module to args

0.4b/2013-01-28

  • Fix: Refactor api tests
  • Fix #119: Range and Slice now support include_key, and include_value params
  • Remove: max cache management + Add: Lru cache and bloom filters

0.4a/2013-01-22

  • Add : Implement PING command
  • Add : Cli module
  • Add : Debian packaging files
  • Update: Use plyvel leveldb backend
  • Update: Use plyvel bloom filter in read operations
  • Update: Add experimental command line doc
  • Update: Set fabfile as a module
  • Update: Documentation to fit with plyvel
  • Update #114: Run MGet against db snapshot
  • Update : working cmdline
  • Fix #114: Enhance MGET perfs by acting on a min/max keys range slice
  • Fix #113: handle MGET arguments in command line
  • Many other little updates and fixes, see logs

0.4/2012-10-22

  • Add: restore theme
  • Add : Base sphinx documentation
  • Update : new License MIT
  • Fix #86: IOError when bad config file supplied as cmdline argument
  • Fix #95: Elevator will start and log errors even though some databases are corrupted
  • Fix : log-level debug messages format
  • Fix : travis, tests, requirements

0.3d/2012-10-19

  • Add : Request error for invalid request messages
  • Update #91: Mount default at server startup
  • Update #91: Mount/Unmount command + auto-mount on connect
  • Update #91: add a ticker class, which executes a function every x seconds
  • Update #30, Update #99: Compress Responses on demande (request.meta[‘compression’])
  • Update #88, Update #99: now responses comes in two parts header+content
  • Update #88: Fix MGet, Range, Slice return values types to suite with new responses format
  • Update #88: Refactored Request/Responses format
  • Update : Refactored DatabasesHandler internal storage
  • Update : Few refactoring on loggers handling
  • Update : Refactored DBConnect no more db_uid to provide in request
  • Fix #97: provide mono-letters args
  • Fix #89: Log requests/responses on log-level=DEBUG
  • Fix #87: Refactored logging
  • Fix #100: Non blocking workers, graceful shutdown == PERFORMANCES
  • Fix #98: Activity logging on both file and stdout
  • Fix #101: fixed ipc handling
  • Fix : api tests for compatibility with new Req/Resp
  • Fix : refactored tests for new Range/Slice behavior when size == 1
  • Fix : Mount/Unmount passed args

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

推荐PyPI第三方库


热门话题
java什么数据库最类似于Map,每个用户/id存储无限多个“键”和“值”?   java仅使用super pom进行测试   内存不足如何解析java。OutOfMemoryError:Java堆空间在增加堆大小的情况下将意味着延迟OutOfMemoryError   来自另一个类的mysql和java jdbc调用[运行时应用程序]   java通过下拉菜单更改搜索框搜索的内容   JAVAlang.ClassNotFoundException:sun。jdbc。odbc。JdbcOdbcDriver   java Selenium点击链接   JavaSpringHibernate:从唯一值列表中获取对象列表   java Bing广告与桌面身份验证问题   java如何在没有任何外部SDK的情况下从安卓打印到收据打印机?   未调用java菜单片段类   java在IDEA和PyCharm中同时为同一个项目工作   java我们如何为同一个异常提供不同的海关信息   jakarta ee中是否预定义了“请求”和“响应”变量或值?   java更好地解决“之前和之后”难题?   尝试将数据从Excel添加到Java   发送电子邮件的Java代码只适用于一个电子邮件id?   java如何从资产解析XML?