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 ).