Document mongodb's driver deployments

This patch adds a base documentation for mongodb's driver. This
documentation is useful for both users, developers and operators, and it
should be probably moved to the users-guide.

Lets work and brainstorm on it as a developers doc first and then move
it.

Change-Id: I532c3d5edf20497eb9eae1f691dd706c5fe10b2a
This commit is contained in:
Flavio Percoco 2014-10-03 13:33:27 +02:00 committed by Flavio Percoco
parent 38a4cbab00
commit 0097597f6c
5 changed files with 65 additions and 5 deletions

View File

@ -89,7 +89,7 @@ Zaqar is composed of two layers:
:maxdepth: 1
transport
storage
storage/autoindex
The **transport drivers** are responsible for interacting with Zaqar clients.
Every query made by clients is processed by the transport layer,

View File

@ -1,6 +1,6 @@
-------
Storage
-------
---------------------------------
API reference for storage drivers
---------------------------------
.. currentmodule:: zaqar.queues.storage.base

View File

@ -0,0 +1,12 @@
-------------
Storage Layer
-------------
The **storage drivers** are responsible for interacting with the storage backends
and, that way, store or retrieve the data coming from the transport layer.
.. toctree::
:maxdepth: 1
api
mongodb

View File

@ -0,0 +1,5 @@
--------------
MongoDB Driver
--------------
.. automodule:: zaqar.queues.storage.mongodb

View File

@ -11,7 +11,50 @@
# See the License for the specific language governing permissions and
# limitations under the License.
"""MongoDB Storage Driver for Zaqar"""
r"""
MongoDB Storage Driver for Zaqar.
About the store
---------------
MongoDB is a nosql, eventually consistent, reliable database with support for
horizontal-scaling and capable of handling different levels of throughputs.
Supported Features
------------------
- FIFO
- Unlimited horizontal-scaling [1]_
- Reliability [2]_
.. [1] This is only possible with a sharding environment
.. [2] Write concern must be equal or higher than 2
Supported Deployments
---------------------
MongoDB can be deployed in 3 different ways. The first and most simple one is
to deploy a standalone `mongod` node. The second one is to use a Replica Sets
which gives a master-slave deployment but cannot be scaled unlimitedly. The
third and last one is a sharded cluster.
The second and third methods are the ones recommended for production
environments where durability and scalability are a must-have. The driver
itself forces operators to use such environments by checking whether it is
talking to a replica-set or sharded cluster. Such enforcement can be disabled
by running Zaqar in an unreliable mode.
Replica Sets
------------
When running on a replica-set, Zaqar won't try to be smart and it'll rely as
much as possible on the database and pymongo.
Sharded Cluster
---------------
TBD
"""
from zaqar.queues.storage.mongodb import driver