{ "info": { "author": "JBKahn", "author_email": "josephbkahn@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# [Django Sharding](https://github.com/JBKahn/django-sharding)\n\nDjango Sharding is a library and part-framework for sharding Django applications.\n\nNote: Does not support Django 1.10.3 due to a [bug in the release](https://github.com/JBKahn/django-sharding/issues/48).\n\nIt helps you to scale your applications by sharding your data across multiple databases in a consistent way.\n\n[![Build Status](https://travis-ci.org/JBKahn/django-sharding.svg?branch=master)](https://travis-ci.org/JBKahn/django-sharding)\n[![PyPI version](https://badge.fury.io/py/django-sharding.svg)](https://badge.fury.io/py/django-sharding)\n[![PyPi downloads](https://img.shields.io/pypi/dm/django-sharding.svg)](https://crate.io/packages/django-sharding/)\n[![Coverage Status](https://coveralls.io/repos/JBKahn/django-sharding/badge.svg?branch=master&service=github)](https://coveralls.io/github/JBKahn/django-sharding?branch=master)\n\n### What is Sharding?\n\nSharding is a way of horizontally partitioning your data by storing different rows of the same table in multiple tables across multiple databases. This helps to increase the number of connections to a given resource as well as improves read performance of your application.\n\n### Read The Documentation\n\nFor information about how to setup sharding in your application, [read the documentation](http://josephkahn.io/django-sharding/).\n\n### Developer Experience\n\nI wrote this library after working on this problem for [Wave](https://www.waveapps.com) and not being able to find a library that suited our needs. What we were looking for was something that was powerful, extensible and customizable. This library was created for just that purpose and includes at least one implementation of each part of the pipeline with room to replace any individual components.\n\n### Influences\n\nThe package was influenced by my experiences at Wave as well as the help and code of my co-workers.\n\n### Installation\n\nCheck out the [installation section](http://josephkahn.io/django-sharding/docs/installation/Settings.html) of the docs for basic package setup.\n\n### Basis Setup & Usage\n\n#### Sharding by User\n\nSelect a model to shard by and open up the models.py file. Here we'll use the user model:\n\n```python\nfrom django.contrib.auth.models import AbstractUser\n\nfrom django_sharding_library.decorators import shard_storage_config\nfrom django_sharding_library.models import ShardedByMixin\n\n\n@shard_storage_config()\nclass User(AbstractUser, ShardedByMixin):\n pass\n```\n\nAdd that custom User to your settings file using the string class path:\n\n```python\nAUTH_USER_MODEL = '.User'\n```\n\n#### Create Your First Sharded Model\n\nDefine your new model, eg:\n\n```python\nfrom django.db import models\n\nfrom django_sharding_library.decorators import model_config\nfrom django_sharding_library.fields import TableShardedIDField\nfrom django_sharding_library.models import TableStrategyModel\n\n\n@model_config(database='default')\nclass ShardedCarIDs(TableStrategyModel):\n pass\n\n\n@model_config(sharded=True)\nclass Car(models.Model):\n id = TableShardedIDField(primary_key=True, source_table_name='app.ShardedCarIDs')\n ignition_type = models.CharField(max_length=120)\n company = models.ForeignKey('companies.Company')\n\n def get_shard(self):\n return self.company.user.shard\n```\n\n### Running migrations\n\nRun them as normal, for example:\n\n```\n./manage.py makemigrations \n\n# To let django run the migrations in all the right places.\n./manage.py migrate \n\n# To specify the database to run it on\n./manage.py migrate --database=\n```\n\n### Acccessing sharded data\n\n```python\n# TODO: Update this with methods.\nshard = User.shard\nCar.objects.using(shard).get(id=123)\n```\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JBKahn/django-sharding", "keywords": "django shard sharding library", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django_sharding", "package_url": "https://pypi.org/project/django_sharding/", "platform": "", "project_url": "https://pypi.org/project/django_sharding/", "project_urls": { "Homepage": "https://github.com/JBKahn/django-sharding" }, "release_url": "https://pypi.org/project/django_sharding/4.0.0/", "requires_dist": [ "dj-database-url (<1.0.0,>=0.4.1)", "django (<3.0.0,>=1.8)" ], "requires_python": "", "summary": "A sharding app to include in your project so that you can shard your data.", "version": "4.0.0" }, "last_serial": 4065935, "releases": { "0.0.1": [], "0.0.2": [ { "comment_text": "", "digests": { "md5": "98ce6797501f003c53d6c2fa8e786fe1", "sha256": "a0033275d8e457f71e8653d345d006c521e1b3d3bd442606ca7c4502601dff54" }, "downloads": -1, "filename": "django_sharding-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "98ce6797501f003c53d6c2fa8e786fe1", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 30806, "upload_time": "2015-10-11T22:42:41", "url": "https://files.pythonhosted.org/packages/1f/f1/f429f5a987439a6a3a02054549d6f2ba0d3ec5bf2b533aa9d05fd4981963/django_sharding-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "404bc4b4287cb7022c7d867d9be60e41", "sha256": "36ce72c0368bc95ae2d254ceb27c4374deff19ac607d1b4c267cd58b74715310" }, "downloads": -1, "filename": "django_sharding-0.0.2.tar.gz", "has_sig": false, "md5_digest": "404bc4b4287cb7022c7d867d9be60e41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18967, "upload_time": "2015-10-11T22:42:37", "url": "https://files.pythonhosted.org/packages/72/b9/388b4c66ae4efc1baa6819c9a36022a0d6a218e8e91128adbe82c81915d1/django_sharding-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "130fb8a9f4408ba6611742b83037e5cc", "sha256": "06c10be255077f03feac179b959609ba32fc507b357a2794db374673dcd6eabd" }, "downloads": -1, "filename": "django_sharding-0.0.3.tar.gz", "has_sig": false, "md5_digest": "130fb8a9f4408ba6611742b83037e5cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18940, "upload_time": "2015-11-23T21:29:54", "url": "https://files.pythonhosted.org/packages/a0/cc/ad0bbd5d76ee11086c06012421ac5a398923d994fee9ae525f644a75f3d3/django_sharding-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "82fcd1f1a96459f74b1056ee1cbfa33a", "sha256": "be8cd0a8fcb1ad02e6845eee4e62ab62b86b96c32fc3917dd6853e1a550e0a3a" }, "downloads": -1, "filename": "django_sharding-0.0.4.tar.gz", "has_sig": false, "md5_digest": "82fcd1f1a96459f74b1056ee1cbfa33a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19096, "upload_time": "2015-12-14T18:23:23", "url": "https://files.pythonhosted.org/packages/14/65/bf9f29b2662892d4df3d3f40bb17295aeb68619bcf65f2e21909855d7f9f/django_sharding-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e131c097856c01aed61a957a760e2305", "sha256": "7bbfc6dcaa2b4d87a5cda2b0511d16967b4583d55b3cb891a8b4d0ed8fdf938c" }, "downloads": -1, "filename": "django_sharding-0.0.5.tar.gz", "has_sig": false, "md5_digest": "e131c097856c01aed61a957a760e2305", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19370, "upload_time": "2015-12-14T21:37:30", "url": "https://files.pythonhosted.org/packages/6d/46/81dc30714d655796dada269823de7b002695dcbc949eb92be480d6a610cb/django_sharding-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "9094ef5e659e586b1e4ad1eb093d5b64", "sha256": "8440ab9a4f7d7e5ba65df1bfeab9a449062afa00d1a1b30290c075905c935395" }, "downloads": -1, "filename": "django_sharding-0.0.6.tar.gz", "has_sig": false, "md5_digest": "9094ef5e659e586b1e4ad1eb093d5b64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19399, "upload_time": "2015-12-15T19:10:16", "url": "https://files.pythonhosted.org/packages/82/56/099c6d4dd276e4c135838c1b4e6e9f12e59485dca012aa1bac8c968e9d36/django_sharding-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "7cd142277b5b02c2fc8baee9a045808a", "sha256": "d205227f49832c9544732cbc74fe559c4f38b51348849dd24ec1e3c281822709" }, "downloads": -1, "filename": "django_sharding-0.0.7.tar.gz", "has_sig": false, "md5_digest": "7cd142277b5b02c2fc8baee9a045808a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19231, "upload_time": "2016-01-18T17:16:49", "url": "https://files.pythonhosted.org/packages/46/13/2dac78d0a8d57c20ffed338d10870bc9daf8fe23005b61d2d45b255c70e7/django_sharding-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "7ec18a189fee6554cd883807b18338d8", "sha256": "765adc4d3628e1d05e1a7b423eac8dc0ecd76dbf1829b32c71965afff56a4308" }, "downloads": -1, "filename": "django_sharding-0.0.8.tar.gz", "has_sig": false, "md5_digest": "7ec18a189fee6554cd883807b18338d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20847, "upload_time": "2016-04-21T03:23:42", "url": "https://files.pythonhosted.org/packages/1e/17/67a1b1e0dbee7fe392f64c60efbf97bb38908fe6b1bdef048862e2bca692/django_sharding-0.0.8.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "02cd70cb35e7b4ed493613607a1330d3", "sha256": "4c6af39d525a59f381d30491ef50ee39fb147cf03e8bf5da2e3c8c17dc5d68ad" }, "downloads": -1, "filename": "django_sharding-0.1.0.tar.gz", "has_sig": false, "md5_digest": "02cd70cb35e7b4ed493613607a1330d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30573, "upload_time": "2016-10-07T14:53:28", "url": "https://files.pythonhosted.org/packages/83/a2/97955fa634ad16df3c130d29742dc0bcbafc786bac0b2ec559ee194f4d0c/django_sharding-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "8c531c798c089c0bfc18357687d4b565", "sha256": "a6f2e6a34b747586efea35a93759b716b3caf9af45f02d38e9944fb46bf6bf9d" }, "downloads": -1, "filename": "django_sharding-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8c531c798c089c0bfc18357687d4b565", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31088, "upload_time": "2016-10-17T01:32:48", "url": "https://files.pythonhosted.org/packages/0f/e6/42022cc348ad12cf56d0a60d837b82045c9b0e50002a445166fb9ba48564/django_sharding-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "070f2a7b6a44b4393ec65fd9491f8d1c", "sha256": "a129b63c3423c05dbd8c7cb90897ae96ef305925211ef251f6a6fc5c923ac341" }, "downloads": -1, "filename": "django_sharding-1.1.0.tar.gz", "has_sig": false, "md5_digest": "070f2a7b6a44b4393ec65fd9491f8d1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31659, "upload_time": "2017-03-20T01:24:03", "url": "https://files.pythonhosted.org/packages/89/bb/0450d3bc79fddd78dd4fc6ad4aee8ead52a945972737f3091afb3ad4f330/django_sharding-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "cc64e6a41a8ce0ff4d7e92f370d77f7b", "sha256": "d3ab4431a7f4efa1cedae112c2cd94923e2dada51432bac934565a66e3237e84" }, "downloads": -1, "filename": "django_sharding-1.2.0.tar.gz", "has_sig": false, "md5_digest": "cc64e6a41a8ce0ff4d7e92f370d77f7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31897, "upload_time": "2017-05-01T12:59:37", "url": "https://files.pythonhosted.org/packages/2b/c5/a2295ef634e43e9c165fbd9525f77c65dd29f91c8013dd9ecb53cc1ac525/django_sharding-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "8ee4478f2fcc1b352ff48e97184d5e34", "sha256": "209e3f8835c89021f1ebe73537d2b51bfa77afcf702b83c6fd4658cd504940e4" }, "downloads": -1, "filename": "django_sharding-2.0.0.tar.gz", "has_sig": false, "md5_digest": "8ee4478f2fcc1b352ff48e97184d5e34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33026, "upload_time": "2017-09-10T19:30:02", "url": "https://files.pythonhosted.org/packages/b6/ab/8eb142583427ef87951ae63745effdaf522f7566553f6b56c9ba568b13a8/django_sharding-2.0.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "a807694f06ea6fa66869bb8b35128b8f", "sha256": "a1b550e6431f99910e201a4000c4bc91d3791bfe9b603f4e83bd38c33ae4cca6" }, "downloads": -1, "filename": "django_sharding-3.0.0.tar.gz", "has_sig": false, "md5_digest": "a807694f06ea6fa66869bb8b35128b8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31555, "upload_time": "2018-04-26T18:45:33", "url": "https://files.pythonhosted.org/packages/07/7b/f53ff8c66b9bdae822654db27ce62f0326e8efb04dfa2b7319bd60fa3472/django_sharding-3.0.0.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "4ca1529efd7788b8c32edf51d96c7665", "sha256": "8b2745ad89ca917843ee4a20c852e71881703476d33b9e0b350f2bb0b8da8b8b" }, "downloads": -1, "filename": "django_sharding-4.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4ca1529efd7788b8c32edf51d96c7665", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 29498, "upload_time": "2018-07-16T14:13:55", "url": "https://files.pythonhosted.org/packages/02/08/14151312e41e9bc7e9c12000e6567996b6cdef8687aaf17755e69de54bff/django_sharding-4.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa1fb4be25316ba88785f29a7045082b", "sha256": "20aa29bf01c257b006346abc5b09d93aef7ef8a8efafff741d2ca70788c930cd" }, "downloads": -1, "filename": "django_sharding-4.0.0.tar.gz", "has_sig": false, "md5_digest": "aa1fb4be25316ba88785f29a7045082b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31657, "upload_time": "2018-07-16T14:13:57", "url": "https://files.pythonhosted.org/packages/87/ff/b8dedac3365bc8562094a0801950cf3011382acb935711354a2f23290bb9/django_sharding-4.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4ca1529efd7788b8c32edf51d96c7665", "sha256": "8b2745ad89ca917843ee4a20c852e71881703476d33b9e0b350f2bb0b8da8b8b" }, "downloads": -1, "filename": "django_sharding-4.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4ca1529efd7788b8c32edf51d96c7665", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 29498, "upload_time": "2018-07-16T14:13:55", "url": "https://files.pythonhosted.org/packages/02/08/14151312e41e9bc7e9c12000e6567996b6cdef8687aaf17755e69de54bff/django_sharding-4.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa1fb4be25316ba88785f29a7045082b", "sha256": "20aa29bf01c257b006346abc5b09d93aef7ef8a8efafff741d2ca70788c930cd" }, "downloads": -1, "filename": "django_sharding-4.0.0.tar.gz", "has_sig": false, "md5_digest": "aa1fb4be25316ba88785f29a7045082b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31657, "upload_time": "2018-07-16T14:13:57", "url": "https://files.pythonhosted.org/packages/87/ff/b8dedac3365bc8562094a0801950cf3011382acb935711354a2f23290bb9/django_sharding-4.0.0.tar.gz" } ] }