mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-08 18:00:23 -04:00
fb81f9c8d9
Also replace http://pypi.python.org/pypi with https://pypi.org/project Change-Id: I84b5005c39969a82140706472989f2a30b0c7685
40 lines
1.8 KiB
Python
40 lines
1.8 KiB
Python
"""A basic example of using the SQLAlchemy Sharding API.
|
|
Sharding refers to horizontally scaling data across multiple
|
|
databases.
|
|
|
|
The basic components of a "sharded" mapping are:
|
|
|
|
* multiple :class:`_engine.Engine` instances, each assigned a "shard id".
|
|
These :class:`_engine.Engine` instances may refer to different databases,
|
|
or different schemas / accounts within the same database, or they can
|
|
even be differentiated only by options that will cause them to access
|
|
different schemas or tables when used.
|
|
|
|
* a function which can return a single shard id, given an instance
|
|
to be saved; this is called "shard_chooser"
|
|
|
|
* a function which can return a list of shard ids which apply to a particular
|
|
instance identifier; this is called "id_chooser".If it returns all shard ids,
|
|
all shards will be searched.
|
|
|
|
* a function which can return a list of shard ids to try, given a particular
|
|
Query ("query_chooser"). If it returns all shard ids, all shards will be
|
|
queried and the results joined together.
|
|
|
|
In these examples, different kinds of shards are used against the same basic
|
|
example which accommodates weather data on a per-continent basis. We provide
|
|
example shard_chooser, id_chooser and query_chooser functions. The
|
|
query_chooser illustrates inspection of the SQL expression element in order to
|
|
attempt to determine a single shard being requested.
|
|
|
|
The construction of generic sharding routines is an ambitious approach
|
|
to the issue of organizing instances among multiple databases. For a
|
|
more plain-spoken alternative, the "distinct entity" approach
|
|
is a simple method of assigning objects to different tables (and potentially
|
|
database nodes) in an explicit way - described on the wiki at
|
|
`EntityName <https://www.sqlalchemy.org/trac/wiki/UsageRecipes/EntityName>`_.
|
|
|
|
.. autosource::
|
|
|
|
"""
|