Целое число идентификатора Django

Есть ли ограничение для AutoField в модели Django или в базе данных?

Проект Django, над которым я работаю, потенциально может увидеть множество объектов в определенных таблицах базы данных, которые за короткий промежуток времени будут превышать 40000.

Я использую Sqlite для Dev и Postgresql для производства.

3 ответа

Добавление новой информации для Django 2.x:


Djangos AutoFieldявляется IntegerField, Документы для IntegerField сказать:

Значения от -2.147.483.648 в 2.147.483.647 безопасны во всех базах данных, поддерживаемых Django.

AutoField по умолчанию используются только положительные числа, поэтому значения могут идти от 1 в 2.147.483.647,


поскольку Django 1.10 также есть BigAutoField, что очень похоже на BigIntegerField, Документы для BigAutoField сказать:

64-разрядное целое [...] число, которое гарантированно соответствует числам из 1 в 9.223.372.036.854.775.807,

Теперь, документы не говорят это явно для этого поля, но используя слова is garanteed to fit Я предполагаю, что это применимо ко всем базам данных, поддерживаемым Django.

Добавив это как ответ. Django сопоставляет это с последовательными столбцами, что означает, что максимальное значение находится в диапазоне 2 миллиардов (точнее, 2 147 483 647). Хотя это вряд ли является проблемой для большинства приложений, если вы это сделаете, вы можете вместо этого изменить тип на bigint, и это очень маловероятно, что вы когда-нибудь достигнете конца 64-битного int пространства.

Как другие уже упоминали, используете ли вы int или же bigintсоответственно у вас есть 2.147.483.648 или же 9.223.372.036.854.775.808 ценности.

Если вы думаете, чтобы превысить эти цифры, вы можете сделать шардинг. Короче говоря, шардинг - это способ горизонтального разделения ваших данных путем хранения разных строк одной и той же таблицы в нескольких таблицах в нескольких базах данных.

Для Django доступно множество библиотек шардинга (например, django-sharding)

Другие вопросы по тегам