CrateDB как база данных временных рядов для Django

Я пытаюсь использовать CrateDB в качестве базы данных временных рядов для Django. Я развертываю оба сервиса на docker для разработки.

Я начал с развертывания следующих версий:

  • Django: 4.1.3
  • CrateDB: 5.1.0

Однако я получал ошибку совместимости: django.db.utils.NotSupportedError: PostgreSQL 11 or later is required (found 10.5).

Я понизил версию Django до 3.0, где я не получаю эту ошибку, однако теперь я получаю вот эту:

Есть предложения?

Только что было внесено изменение в CrateDB ( https://github.com/crate/crate/pull/13223 ), которое позволит возвращать другой номер версии PostgreSQL, и это поможет нам решить первую проблему.

Но даже в последней версии Django мы все еще видим эту проблему с вызовом pg_table_is_visible, это функция, которая в настоящее время не реализована в CrateDB, это отслеживается в https://github.com/crate/crate/issues/7988. Эту конкретную проблему можно обойти, отредактировав /usr/lib/python3/dist-packages/django/db/backends/postgresql/introspection.py и отредактировав SQL операторы, удалив проверки этой функции, это должно быть нормально, если вы используете одну схему и пользователя с достаточными правами.

Надеюсь, это поможет, но в зависимости от того, что вы пытаетесь сделать, другая проблема, с которой вы, скорее всего, столкнетесь - это автоинкрементные колонки, по умолчанию Django использует такие типы данных, как serial (например, в django_migrations) и bigserial (для автополей), CrateDB - это распределенная система, и в настоящее время в ней нет концепции последовательностей, подобных этой. Вместо этого можно использовать UUID (см. https://code.djangoproject.com/ticket/32577 ).

Вернуться на верх