Как интегрировать Redis с SQLAlchemy

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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