- Add
skip_runtime_checks
tomodel_config
to allow for use of linting tools where sharded databases aren't setup.
- Allow django>=3,<4
This is a combination of maintenance and planning so that I can start down the road of fixing the documentation and being opinionated about how this works. As a first step, I'm removing the more magical parts of this library that route the lookups based on the params passed. It's not a feature I had ever planned to support but had accepted from an outside contributor. Without consistent support I've decided to remove it.
- Remove
sharded_by_field
from themodel_config
function. - Removal of
ShardQuerySet
andShardManager
. - Removal of
router.get_shard_for_id_field
,router.get_shard_for_postgres_pk_field
and support in the router for the magic.
- Added
ShardLookupQuerySet
andShardLookupBaseModel
which help reduce the number of router lookups. WIll add more to docs in upcoming months.
- Support Django 1.11 and up only.
- Test on python3.8 and on newer versions of django.
- Added requirement for
django-environ
and remove usage ofdj_database_url
.
- Makes it less likely for someone to make a mistake and get this by accident.
- Support for Django > 2.0.0 and < 3.0.0 in setup.py
- Support for Django 2.0.0.
- Unpin
dj-database-url
from a specific minor version to a specific major version. - Initial support for deleting django models. I'm not going to update the docs just yet
as I don't entirely like this solution...something is better than nothing.
Check the
test_deleted_model_in_settings
tests to see this. The issue is that django needs to know about a model after you've deleted the class so sharded settings on deleted models need to be tracked somewhere.
- Support for Django 1.11.
- Bugfix so that the
fields.py
file is importable when psycog2 isn't installed. - Add the ability to set the database name in the settings helper, and override the one in the url. Makes generating these settings programatically a bit easier.
- Added decorator for shard storage.
- Renamed
PostgresShardGeneratedIDField
toPostgresShardGeneratedIDAutoField
. - Added non-autoid
PostgresShardGeneratedIDField
that makes a separate call to the database prior to saving. Good for statement based replication. Now you can have more than one of these fields on a model. - Fix
TableShardedIDField
to take a table name rather than model class so that it doesn't give errors when reading the migrations file after deleting the table. - Fix
showmigrations
to use the same database param asmigrate
and act on all by default.
- Django 1.10 compatibility.
- Added postgres specific ID generator
- Some magic sharded field lookups (if you're so inclined)
- The above fields have the additional functionality to automatically lookup the shard when part of the save/update/filter clauses contain the information required to get the shard
- Alters the way data migrations run as far as which databases are acted upon as well as provides an override, see the docs for more details. This brings the package more inline with Django.
- Tested on pthon 2.7, 3.4 and 3.5
- The shards field is using sorted choices so that the migration is the same regardless of the machine.
DJANGO_FRAGMENTS_SHARD_SETTINGS
toDJANGO_SHARDING_SETTINGS
.
- Allow you to rename the app the config is loaded in through a hiddden setting
- Updated the router to accept the
model
hint in addition to already accepting themodel_name
hint.
- Stop selecting incorrect shard group.
- Added additional tests and updated docs
- Added initial functionality to support sharded models, read replicas, tables on non-default databases, docs etc...