В базе данных памяти с возможностью сокетов - PullRequest
0 голосов
/ 26 декабря 2009

Python -> SQLite -> ASP.NET C #

Я ищу приложение базы данных в памяти, которое не должно записывать полученные данные на диск. По сути, у меня будет Python-сервер, который получает игровые данные UDP, транслирует данные и сохраняет их в ядре базы данных памяти.

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

Затем другой сервер ASP.NET должен иметь возможность подключаться к этому в базе данных памяти через TCP / IP через регулярные интервалы, скажем, раз в секунду или 10 секунд. Он должен получить эти данные, и это в свою очередь обновит веб-сайт, который отображает «живые» игровые данные.

Я смотрю на SQlite и задаюсь вопросом, это правильный инструмент для работы, у кого-нибудь есть какие-либо предложения?

Спасибо !!!

Ответы [ 5 ]

1 голос
/ 30 декабря 2009

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

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

1 голос
/ 26 декабря 2009

Совершенно не мое поле, но я думаю, что Redis в том же духе.

0 голосов
/ 30 декабря 2009

Насколько мне известно, SQLite не разрешает удаленные «подключения», он поддерживает только вызов внутрипроцессной библиотеки. Тем не менее, вы можете попробовать использовать MySQL, который, хотя и тяжелее, поддерживает удаленные соединения и имеет таблицы в памяти. Смотри http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html

0 голосов
/ 26 декабря 2009

Возможно, AppFabric подойдет вам?

http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx

0 голосов
/ 26 декабря 2009

Применение SQlite зависит от сложности ваших данных.

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

...