zaqar-specs/specs/ocata/swift-storage.rst
melissaml cba0a9cf8e Rename review.openstack.org to review.opendev.org
There are many references to review.openstack.org, and while the
redirect should work, we can also go ahead and fix them.

Change-Id: I397b58c562079444553d393387d7c6323b06fba4
2019-05-13 20:17:59 +08:00

101 lines
3.1 KiB
ReStructuredText

..
This template should be in ReSTructured text. The filename in the git
repository should match the launchpad URL, for example a URL of
https://blueprints.launchpad.net/zaqar/+spec/awesome-thing should be named
awesome-thing.rst.
Please do not delete any of the sections in this
template. If you have nothing to say for a whole section, just write: None
For help with syntax, see http://www.sphinx-doc.org/en/stable/rest.html
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
=====================
Swift storage backend
=====================
https://blueprints.launchpad.net/zaqar/+spec/swift-storage
Swift is a widely deployed object storage solution for OpenStack. While it's
not particularly designed for high throughput of lots of small objects, which
is what Zaqar mostly does, it scales really well, and is highly fault tolerant.
It would also provide an alternative to people that want to avoid to deploy
and manage MongoDB.
Driver description
==================
The driver only implements the data part, SQL being available for the
control driver. Containers are used per entity and per project, to provide
multitenancy.
Proposed change
===============
The driver uses one global service user, and stores all messages in one
project. It uses suffix on container names to scope them. It will use mostly
one container per entity type, plus other for additional indexes. We may need
to increase or decrease the number of containers used, to find the appropriate
performance balance.
It may be worth marking the driver experimental first, so that we can change
the storage model without caring about migrating data.
What are the driver's guarantees in terms of reliability?
=========================================================
We rely on Swift being configured appropriately to provide message reliability.
By default objects are replicated 3 times, which offers good guarantees.
What are the driver's guarantees in terms of scalability?
=========================================================
Again, we rely on Swift scalability guarantees here.
What are the driver's guarantees in terms of interoperability?
==============================================================
We use publicly available Swift APIs, so the data is easily auditable and
recoverable behind Zaqar.
What are the driver's guarantees in terms of openness?
======================================================
We use python-swiftclient to access Swift, which uses the Apache 2.0 license.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
therve
Milestones
----------
Target Milestone for completion:
Ocata-3
Work Items
----------
* Implement storage driver, and make unit tests pass.
* Add a voting gate against Swift.
* Possibly make some performance testing to tweak how objects are stored.
Dependencies
============
- Depend on Swift fix for if-none-match: https://review.opendev.org/395582
.. note::
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode