Настройте Cassandra DB в django с помощью cqlengine, но без использования django-cassandra-engine

Я новичок в Django и разработал 1 приложение, используя mysql в качестве основной базы данных, но в моем следующем проекте мне нужно использовать Cassandra db, используя https://github.com/cqlengine/cqlengine, но не используйте https://github.com/r4fek/django-cassandra-engine (что является оберткой над cqlengine?).

Я понятия не имею, как мне начать? Я имею в виду, как и где мне создать соединение с базой данных, а затем создать модели в файле models.py?

Должен ли я создавать соединение в файле init.py? в views.py? что будет наиболее эффективным способом?

было бы здорово (и для будущих читателей), если бы кто-то предоставил простую конфигурацию и модель.


person xyz    schedule 16.12.2014    source источник


Ответы (2)


Демонстрация twissandra должна быть хорошим примером того, как создавать приложения с помощью Cassandra и Django.

В этой реализации нет models.py и соединение хранится в файле cass.py.

Вы увидите, что cass.py также содержит все функции, необходимые для возврата данных из базы данных C* и создания объектов, используемых системой. Здесь вы замените запросы API своим кодом CqlEngine.

Я надеюсь, что эти ресурсы укажут вам правильное направление

person RussS    schedule 16.12.2014
comment
Спасибо! но я ищу только источник cqlengine и использую models.py. например from cqlengine import connection connection.setup(['127.0.0.1:9160']) не могли бы вы предоставить источник для этого. - person xyz; 17.12.2014
comment
Twissandra долгое время была проектом, о котором забыли время. Вы можете просмотреть мой ответ для соответствующего ответа CQLEngine. Хороший пример проекта, на который стоит обратить внимание: Meat Bot от rustyrazorblade, создателя CQLEngine. - person mbeacom; 30.04.2015

Rustyrazorblade показывает простой способ сделать это с помощью своей обучающей ветки CQLEngine ЗДЕСЬ.

Вы можете легко настроить соединение, выполнив что-то подобное в файле your_app_project/models/connection.py:

from cqlengine import management
from cqlengine.connection import setup

def connect():
    setup(["127.0.0.1", "127.0.1.1", "127.0.1.2"], "tutorial", retry_connect=True)
    management.create_keyspace("tutorial", replication_factor=1, strategy_class="SimpleStrategy")

В этом примере: «tutorial» — это keyspace, которое мы используем, strategy_class — это стратегия репликации, которую использует ваш экземпляр C*, replication_factor — это количество репликаций, которые будут храниться по всему кольцу, 127.0.0.1 — это IP-адрес узла кластера Cassandra (вы можете передать его в виде списка или строки) и retry_connect указывает, хотите ли вы, чтобы он пытался повторно подключиться в случае сбоя соединения.

Отсюда очень легко запутаться новым пользователям C*. Вы можете вызвать это в любое время перед синхронизацией таблиц C* или использованием запроса C*.

Итак, вы захотите сделать что-то вроде:

from cqlengine.management import sync_table
from models.connection import connect
from models.somemodels import MyCassandraModel

# This will fire off our previously setup 'connect' method
connect()
# This will setup the Model as a table in your C* DB
sync_table(MyCassandraModel)

Вы даже можете поместить это в manage.py, при условии, что CQLEngine setup() выполняется правильно.

person mbeacom    schedule 03.03.2015