Как интегрировать Redis с SQLAlchemy - PullRequest
14 голосов
/ 01 декабря 2010

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

Ответы [ 2 ]

14 голосов
/ 02 декабря 2010

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

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

13 голосов
/ 02 декабря 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...