2010-12-01 1 views
10

Я изучаю использование SQLAlchemy, подключенного к базе данных SQL для 12 стандартных реляционных таблиц (например, SQLite или PostgreSQL). Но тогда я бы хотел использовать Redis с Python для нескольких таблиц, особенно для быстрой настройки Redis. Я понимаю, что Redis - это NoSQL, но могу ли я интегрировать его с SQLAlchemy в интересах обработки сеанса и потоков, которые имеет SQLAlchemy?Как интегрировать Redis с SQLAlchemy

Есть ли диалект Redis SA? Я не мог найти его, что, вероятно, означает, что мне не хватает какой-то базовой точки. Есть ли лучшая архитектура, на которую я должен обратить внимание, чтобы использовать два разных типа базы данных?

+0

какой у вас прецедент? –

ответ

13

Хотя можно создать ORM, который помещает данные в redis, это не особенно хорошая идея. ORM предназначены для предоставления стандартных функций SQL. Многие вещи, которые являются стандартными в SQL, такие как запрос на произвольные столбцы, недоступны в redis, если вы не выполняете много дополнительной работы. В то же время redis имеет такие функции, как набор манипуляций, которые не существуют в стандартном SQL, поэтому ORM не будет использоваться.

Возможно, ваш лучший вариант - написать код для прямого взаимодействия с redis, а не пытаться использовать несоответствующую абстракцию. Как правило, вы обнаружите, что код для получения данных из redis довольно прост, чем код SQL, который оправдывает использование ORM.

9

Redis очень хорошо разбирается в том, что он делает, сохраняя ключевые значения и делая простые атомальные операции , но если вы хотите использовать его в качестве реляционной базы данных, вы действительно получите SUFFER !, как я ... и здесь это моя история ...

Я делаю что-то подобное, создавая несколько объектов для абстрагирования всех внутренних объектов redis, отображающих запросы примитивов (я называл фильтры в своем коде), get, set, updates и многое другое. что вы можете ожидать от ORM, и на самом деле, если вы имеете дело только с localhost, вы не будете замедлять свое приложение, вы можете использовать redis как реляционную базу данных, но если вы в любое время попытаетесь переместить вашу базу данных в другую хост, который будет представлять множество проблем с точки зрения сетевой передачи, я заканчиваю с перезаряженными классами с использованием redis и его труб, что делает мою программу на 900% быстрее, что делает мою программу пригодной для использования в локальной сети, так или иначе, я начинаю переводить мою библиотеку баз данных в postgres.

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

Возвращаясь к вашему вопросу, я не знаю какого-либо проекта, чтобы сделать адаптер для sqlalchemy для redis, и я думаю, что никто не будет действительно заинтересован в чем-то подобном из-за характера каждого проекта.

+2

+1, за рассказ моей истории :( – Behrooz

 Смежные вопросы

  • Нет связанных вопросов^_^