基于leveldb后端的磁盘密钥/值存储
Elevator的Python项目详细描述
用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
谢谢
感谢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