..
This file is the long-description for PyPI so it can only use plain
ReST, no sphinx extensions.
RelStorage is a storage implementation for ZODB that stores pickles in
a relational database (`RDBMS`_). PostgreSQL 10 and above, MySQL
5.7.19 / 8.0, Oracle 10g and above, and SQLite 3.8.3 and above are
currently supported. RelStorage replaced the PGStorage project.
.. _RDBMS: https://en.wikipedia.org/wiki/Relational_database_
==========
Features
==========
* It is a drop-in replacement for FileStorage and ZEO, with several
enhancements:
* Supports undo, packing, and object history preservation just like
FileStorage.
* RelStorage can be configured *not* to keep object histories for
reduced disk space usage and improved performance.
* Multiple processes on a single machine can read and write a local
ZODB database using SQLite without needing to start and manage
another process (i.e., ZEO).
* Blobs can be stored on a shared filesystem, or (recommended) in
the relational database and only cached locally.
* Multiple threads in the same process share a high-performance
in-memory pickle cache to reduce the number of queries to the
RDBMS. This is similar to ZEO, and the ZEO cache trace tools are
supported.
* The in-memory pickle cache can be saved to disk and read when a
process starts up. This can dramatically speed up site warmup time
by eliminating a flood of RDBMS queries. Unlike ZEO, this cache
is automatically shared by all processes on the machine (no need
to configure separate client identifiers.)
* Ideal for large, high volume sites.
* Multiple Python processes on multiple machines can read and write
the same ZODB database concurrently. This is similar to ZEO, but
RelStorage does not require ZEO.
* Supports ZODB 5's parallel commit feature: Database writers only
block each other when they would conflict (except for a small
window at the end of the twophase commit protocol when the
transaction ID is allocated; that still requires a global database
lock).
* According to some tests, RelStorage handles concurrency better than
the standard combination of ZEO and FileStorage.
* Whereas FileStorage takes longer to start as the database grows
due to an in-memory index of all objects, RelStorage starts
quickly regardless of database size.
* Capable of failover to replicated SQL databases.
* Tested integration with `gevent`_ for PostgreSQL, MySQL, and SQLite.
* There is a simple way (`zodbconvert`_) to (incrementally) convert
FileStorage to RelStorage and back again. You can also convert a
RelStorage instance to a different relational database. This is a
general tool that can be used to convert between any two ZODB
storage implementations.
* There is a simple way (`zodbpack`_) to pack databases.
* Supports `zodburi`_ .
* Free, open source (ZPL 2.1)
.. _gevent: http://gevent.org
.. _zodbconvert: https://relstorage.readthedocs.io/en/latest/zodbconvert.html
.. _zodbpack: https://relstorage.readthedocs.io/en/latest/zodbpack.html
.. _zodburi: https://relstorage.readthedocs.io/en/latest/zodburi.html
Features Supported by Databases
===============================
Some of RelStorage's features are only supported on certain versions
of certain databases. If the database doesn't support the feature,
RelStorage will still work, but possibly with a performance penalty.
.. list-table:: Supported Features
:widths: auto
:header-rows: 1
:stub-columns: 1
* -
- Parallel Commit
- Shared readCurrent locks
- Non-blocking readCurrent locks
- Streaming blobs
- Central transaction ID allocation
- Atomic lock and commit without Python involvement
* - PostgreSQL
- Yes
- Yes
- Yes
- With psycopg2 driver
- Yes
- Yes, except with PG8000 driver
* - MySQL
- Yes
- Yes
- Native on MySQL 8.0, emulated on MySQL 5.7
- No, emulated via chunking
- Yes
- Yes
* - Oracle
- Yes
- No
- Yes
- Yes
- No (could probably be implemented)
- No (could probably be implemented)
* - SQLite
- No
- No
- N/A (there is no distinction in lock types)
- No, consider using a shared-blob-dir
- N/A (essentially yes because it happens on one machine)
- No
===============
Documentation
===============
Documentation including `installation instructions`_ is hosted on `readthedocs`_.
The complete `changelog`_ is also there.
.. image:: https://readthedocs.org/projects/relstorage/badge/?version=latest
:target: http://relstorage.readthedocs.io/en/latest/?badge=latest
.. _`installation instructions`: http://relstorage.readthedocs.io/en/latest/install.html
.. _`readthedocs`: http://relstorage.readthedocs.io/en/latest/
.. _`changelog`: http://relstorage.readthedocs.io/en/latest/changelog.html
=============
Development
=============
RelStorage is hosted at GitHub:
https://github.com/zodb/relstorage
Continuous integration
======================
A test suite is run for every push and pull request submitted. GitHub
Actions is used to test on Linux and macOS, and AppVeyor runs the builds on
Windows.
.. image:: https://github.com/zodb/relstorage/workflows/tests/badge.svg
:target: https://github.com/zodb/relstorage/actions
.. image:: https://ci.appveyor.com/api/projects/status/pccddlgujdoqvl83?svg=true
:target: https://ci.appveyor.com/project/jamadden/relstorage/branch/master
Builds on CI automatically submit updates to `coveralls.io`_ to
monitor test coverage.
.. image:: https://coveralls.io/repos/zodb/relstorage/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/zodb/relstorage?branch=master
.. _coveralls.io: https://coveralls.io/github/zodb/relstorage
Raw data
{
"_id": null,
"home_page": "https://relstorage.readthedocs.io/",
"name": "RelStorage",
"maintainer": "Jason Madden",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "jason@nextthought.com",
"keywords": "ZODB SQL RDBMS MySQL PostgreSQL Oracle",
"author": "Shane Hathaway with Zope Foundation and Contributors",
"author_email": "shane@willowrise.com",
"download_url": "https://files.pythonhosted.org/packages/6e/4f/acd058ec213b14e0cc48276831eca8b5ada3c94cb1db27abe4480a393d58/RelStorage-4.0.0.tar.gz",
"platform": "any",
"description": "\n..\n This file is the long-description for PyPI so it can only use plain\n ReST, no sphinx extensions.\n\nRelStorage is a storage implementation for ZODB that stores pickles in\na relational database (`RDBMS`_). PostgreSQL 10 and above, MySQL\n5.7.19 / 8.0, Oracle 10g and above, and SQLite 3.8.3 and above are\ncurrently supported. RelStorage replaced the PGStorage project.\n\n.. _RDBMS: https://en.wikipedia.org/wiki/Relational_database_\n\n==========\n Features\n==========\n\n* It is a drop-in replacement for FileStorage and ZEO, with several\n enhancements:\n\n * Supports undo, packing, and object history preservation just like\n FileStorage.\n * RelStorage can be configured *not* to keep object histories for\n reduced disk space usage and improved performance.\n * Multiple processes on a single machine can read and write a local\n ZODB database using SQLite without needing to start and manage\n another process (i.e., ZEO).\n * Blobs can be stored on a shared filesystem, or (recommended) in\n the relational database and only cached locally.\n * Multiple threads in the same process share a high-performance\n in-memory pickle cache to reduce the number of queries to the\n RDBMS. This is similar to ZEO, and the ZEO cache trace tools are\n supported.\n * The in-memory pickle cache can be saved to disk and read when a\n process starts up. This can dramatically speed up site warmup time\n by eliminating a flood of RDBMS queries. Unlike ZEO, this cache\n is automatically shared by all processes on the machine (no need\n to configure separate client identifiers.)\n\n* Ideal for large, high volume sites.\n\n * Multiple Python processes on multiple machines can read and write\n the same ZODB database concurrently. This is similar to ZEO, but\n RelStorage does not require ZEO.\n * Supports ZODB 5's parallel commit feature: Database writers only\n block each other when they would conflict (except for a small\n window at the end of the twophase commit protocol when the\n transaction ID is allocated; that still requires a global database\n lock).\n * According to some tests, RelStorage handles concurrency better than\n the standard combination of ZEO and FileStorage.\n * Whereas FileStorage takes longer to start as the database grows\n due to an in-memory index of all objects, RelStorage starts\n quickly regardless of database size.\n * Capable of failover to replicated SQL databases.\n* Tested integration with `gevent`_ for PostgreSQL, MySQL, and SQLite.\n* There is a simple way (`zodbconvert`_) to (incrementally) convert\n FileStorage to RelStorage and back again. You can also convert a\n RelStorage instance to a different relational database. This is a\n general tool that can be used to convert between any two ZODB\n storage implementations.\n* There is a simple way (`zodbpack`_) to pack databases.\n* Supports `zodburi`_ .\n* Free, open source (ZPL 2.1)\n\n.. _gevent: http://gevent.org\n.. _zodbconvert: https://relstorage.readthedocs.io/en/latest/zodbconvert.html\n.. _zodbpack: https://relstorage.readthedocs.io/en/latest/zodbpack.html\n.. _zodburi: https://relstorage.readthedocs.io/en/latest/zodburi.html\n\nFeatures Supported by Databases\n===============================\n\nSome of RelStorage's features are only supported on certain versions\nof certain databases. If the database doesn't support the feature,\nRelStorage will still work, but possibly with a performance penalty.\n\n\n.. list-table:: Supported Features\n :widths: auto\n :header-rows: 1\n :stub-columns: 1\n\n * -\n - Parallel Commit\n - Shared readCurrent locks\n - Non-blocking readCurrent locks\n - Streaming blobs\n - Central transaction ID allocation\n - Atomic lock and commit without Python involvement\n * - PostgreSQL\n - Yes\n - Yes\n - Yes\n - With psycopg2 driver\n - Yes\n - Yes, except with PG8000 driver\n * - MySQL\n - Yes\n - Yes\n - Native on MySQL 8.0, emulated on MySQL 5.7\n - No, emulated via chunking\n - Yes\n - Yes\n * - Oracle\n - Yes\n - No\n - Yes\n - Yes\n - No (could probably be implemented)\n - No (could probably be implemented)\n * - SQLite\n - No\n - No\n - N/A (there is no distinction in lock types)\n - No, consider using a shared-blob-dir\n - N/A (essentially yes because it happens on one machine)\n - No\n\n\n===============\n Documentation\n===============\n\nDocumentation including `installation instructions`_ is hosted on `readthedocs`_.\n\nThe complete `changelog`_ is also there.\n\n.. image:: https://readthedocs.org/projects/relstorage/badge/?version=latest\n :target: http://relstorage.readthedocs.io/en/latest/?badge=latest\n\n\n.. _`installation instructions`: http://relstorage.readthedocs.io/en/latest/install.html\n.. _`readthedocs`: http://relstorage.readthedocs.io/en/latest/\n.. _`changelog`: http://relstorage.readthedocs.io/en/latest/changelog.html\n\n\n=============\n Development\n=============\n\nRelStorage is hosted at GitHub:\n\n https://github.com/zodb/relstorage\n\nContinuous integration\n======================\n\nA test suite is run for every push and pull request submitted. GitHub\nActions is used to test on Linux and macOS, and AppVeyor runs the builds on\nWindows.\n\n.. image:: https://github.com/zodb/relstorage/workflows/tests/badge.svg\n :target: https://github.com/zodb/relstorage/actions\n\n.. image:: https://ci.appveyor.com/api/projects/status/pccddlgujdoqvl83?svg=true\n :target: https://ci.appveyor.com/project/jamadden/relstorage/branch/master\n\nBuilds on CI automatically submit updates to `coveralls.io`_ to\nmonitor test coverage.\n\n.. image:: https://coveralls.io/repos/zodb/relstorage/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/zodb/relstorage?branch=master\n\n.. _coveralls.io: https://coveralls.io/github/zodb/relstorage\n",
"bugtrack_url": null,
"license": "ZPL 2.1",
"summary": "A backend for ZODB that stores pickles in a relational database.",
"version": "4.0.0",
"project_urls": {
"Bug Tracker": "https://github.com/zodb/relstorage/issues",
"Documentation": "https://relstorage.readthedocs.io",
"Homepage": "https://relstorage.readthedocs.io/",
"Source Code": "https://github.com/zodb/relstorage/"
},
"split_keywords": [
"zodb",
"sql",
"rdbms",
"mysql",
"postgresql",
"oracle"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6e4facd058ec213b14e0cc48276831eca8b5ada3c94cb1db27abe4480a393d58",
"md5": "b26131d4653890d5d73239ba776b98c8",
"sha256": "0eea5c123153afd3fcedde9c8281c10231cdbdd63d604c3bbe1aa9def2cd05f1"
},
"downloads": -1,
"filename": "RelStorage-4.0.0.tar.gz",
"has_sig": false,
"md5_digest": "b26131d4653890d5d73239ba776b98c8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 2561186,
"upload_time": "2023-12-11T22:32:35",
"upload_time_iso_8601": "2023-12-11T22:32:35.691473Z",
"url": "https://files.pythonhosted.org/packages/6e/4f/acd058ec213b14e0cc48276831eca8b5ada3c94cb1db27abe4480a393d58/RelStorage-4.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-11 22:32:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zodb",
"github_project": "relstorage",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"landscape": true,
"appveyor": true,
"tox": true,
"lcname": "relstorage"
}