Я разрабатываю многопользовательскую игру на Python с флеш-интерфейсом, и я использую ее как возможность узнать больше о способе работы NoSQL.Совместное использование Redis и RDBMS (надеюсь, сотрудничество) в приложениях Flask
Redis, похоже, подходит для некоторых вещей, которые мне нужны для этого приложения, включая хранение серверных сессий и других временных данных, например. какие игры продолжаются, кто в сети и т. д. Есть также несколько хороших рецептов Flask/Redis, которые до сих пор делали очень легкими.
Однако в модели данных все еще есть некоторые вещи, которые я предпочел бы жить в традиционной РСУБД, включая учетные записи пользователей, журналы завершенных игр и т. Д. Это не значит, что Редис не может этого делать, но я просто что RDBMS больше подходит им, и поскольку Redis хочет все в памяти, кажется, имеет смысл «складировать» некоторые из этих данных на диске.
Единственное, на что у меня не совсем хорошая стратегия, заключается в том, как сделать эти два хранилища данных счастливыми вместе. Использование ORM, таких как SQLAlchemy и/или redisco, кажется справедливым, потому что ORM захотят владеть всеми данными, которые являются частью их модели данных, и неизбежно возникают моменты, когда мне нужно, чтобы классы из одного ORM знали о классы из другой (например, «пользователи находятся в РСУБД, но игры находятся в Redis, а в играх есть пользователи, участвующие в них.)
Есть ли у кого-нибудь опыт развертывания веб-приложений python с использованием магазина NoSQL, такого как Redis для некоторых вещи и РСУБД для других? Если да, то есть ли у вас какие-либо стратегии для их совместной работы?
ОК, сохранение первичных ключей из хранилища SQL звучит разумно. Моя отправная точка заключалась в использовании redisco в качестве ORM для модели данных Redis, и я начал теряться, когда у меня были классы модели данных, сопоставленные Redisco, со ссылками на классы модели данных с отображением SQLalchemy. Думаю, мне, наверное, лучше всего, если я просто заберу один ORM или другой, и обработаю уникальный идентификатор от одного в качестве внешнего ключа в другом. – tonycpsu
Используйте оба ORM, если они вам нравятся. Но для перекрестных ссылок между ORM, не используйте явные внешние ключи, используйте простые целочисленные поля и «вручную» устанавливайте их с помощью первичного ключа ссылочного объекта. –
Это звучит довольно чисто - я дам ему шанс. Благодарю. – tonycpsu