Version 20 (modified by simon, 16 years ago) ( diff )

added link to Jan Oberst sharding API demo

Multiple Database Support

The most recent discussion about multi-db support can be seen on this thread: http://groups.google.com/group/django-developers/browse_thread/thread/9f0353fe0682b73

Requirements

An ideal solution would address all of the following:

  • Different models/applications living on different databases, for example a 'blog' application on db1 and a forum application on db2. This should include the ability to assign a different database to an existing application without modifying it, e.g. telling Django where to keep the django.contrib.auth.User table.
  • Master-slave replication, where writes go to a single master while reads are spread across one or more slaves. Due to replication lag it may sometimes be necessary for reads that directly follow a related write to be directed to the master.
  • Talking to existing or legacy databases while still allowing newer functionality to be developed on a different database dedicated solely to Django.
  • Sharding, where rows within a single model are spread across multiple databases for improved write performance.

Problems to solve

  • Connection definitions - how are multiple database connections defined? Does this new method replace Django's existing DATABASE_* family of settings?
  • Connection selection - what is the API for telling Django which database a query should be executed against?
  • Associating connections with models - for the common case where a model is assigned to a different database, how is that assignment made? How can existing apps such as contrib.auth be assigned to a different database in a clean way? This is one facet of the connection selection problem.
  • Related managers - how do we deal with the case when the User model lives on one database but its related BlogEntrys live on a different database?
  • Joins across different databases - do we try to get these working? If not, how do we detect them and what kind of error or warning do we present?

Implementations

Attachments (6)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.
Back to Top