MerkavaDB¶
A fast ordered NoSQL database.
Note
This is still in active development. Things will change. If you are interested in helping out, or would like to see any particular features added, let me know.
What is MerkavaDB?¶
A very fast, and lightweight DB for storing ordered data. The order it comes out is the order that it went in. The API is meant to be small and without bloated queries. Consequently, there is a limited set of queries to be made since the primary tool is getting objects in and out of storage in a specific order.
So, why would I use it?¶
Because it is fast. And it is simple.
Let’s say, for example, you are building an application. As a part of your application, you want to have a chat or a news feed. The data will ALWAYS be displayed in the same order. Well, you can persist your data objects and feel condifent that they will always be in the same order, no matter what.
MerkavaDB stores data in a similar format to JSON. So, it is schemaless and will allow you to store data in whatever format you need.
How do I use it?¶
By making HTTP calls to the database server. All you need to do is specify a “channel” and some data.
What kind of data?¶
- nulls
- booleans
- integers
- floats
- strings
- arrays/lists
- maps/dicts
Basically anything you would pass by JSON.
What is a channel?¶
A channel is a division of data. All data is stored in a sequential order given the channel that it is in. For example, it could be a single chat room or news feed.
Supported Operations¶
HTTP POST /<channel>/
- createHTTP GET /<channel>/<id>/
- retrieve a single recordHTTP PATCH /<channel>/<id>/
- update a recordHTTP DELETE /<channel>/<id>/
- delete a recordHTTP PUT /<channel>/<id>/
- restore a deleted recordHTTP GET /<channel>/recent/<X>
- retrieve an array of the X most recent records
Roadmap¶
- Drivers for: Python, NodeJS, Java
- Test coverage
- Documentation
- Clean up utilities
- User interface
- Debian installer
- Single script installer
- Configuration options
- Examples
Current Version¶
version 0.2.0
Installation¶
At the command line either via easy_install or pip:
$ easy_install merkava
$ pip install merkava
Or, if you have virtualenvwrapper installed:
$ mkvirtualenv merkava
$ pip install merkava
Contributing¶
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
You can contribute in many ways:
Types of Contributions¶
Report Bugs¶
Report bugs at https://github.com/ahopkins/merkava/issues.
If you are reporting a bug, please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
Fix Bugs¶
Look through the GitHub issues for bugs. Anything tagged with “bug” is open to whoever wants to implement it.
Implement Features¶
Look through the GitHub issues for features. Anything tagged with “feature” is open to whoever wants to implement it.
Write Documentation¶
MerkavaDB could always use more documentation, whether as part of the official MerkavaDB docs, in docstrings, or even on the web in blog posts, articles, and such.
Submit Feedback¶
The best way to send feedback is to file an issue at https://github.com/ahopkins/merkava/issues.
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
Get Started!¶
Ready to contribute? Here’s how to set up merkava for local development.
Fork the merkava repo on GitHub.
Clone your fork locally:
$ git clone git@github.com:your_name_here/merkava.git
Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, check that your changes pass style and unit tests, including testing other Python versions with tox:
$ tox
To get tox, just pip install it.
Commit your changes and push your branch to GitHub:
$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Pull Request Guidelines¶
Before you submit a pull request, check that it meets these guidelines:
- The pull request should include tests.
- If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
- The pull request should work for Python 2.6, 2.7, and 3.3, and for PyPy.
Check https://travis-ci.org/ahopkins/merkava
under pull requests for active pull requests or run the
tox
command and make sure that the tests pass for all supported Python versions.
Credits¶
Development Lead¶
- Adam Hopkins <admhpkns@gmail.com>
Contributors¶
None yet. Why not be the first?
If you have any suggestions or questions about MerkavaDB feel free to email me at admhpkns@gmail.com.
If you encounter any errors or problems with MerkavaDB, please let me know! Open an Issue at the GitHub https://github.com/ahopkins/merkava main repository.