Хранение глобального хэша в Ruby on Rails - PullRequest
0 голосов
/ 19 января 2010

Я смотрю на приложение, где мне нужно построить модель друга в виде структуры графа. Мне нужно углубиться в несколько градусов, поэтому использование стандартного SQL в MySQL не будет работать из-за циклических ссылок. Я посмотрел на доступные алгоритмы графа, и они включают загрузку всего набора записей в объект Graph, а затем выполнение операций над этим. Я не могу позволить себе делать это для каждой операции.

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

Кто-нибудь знает способ сохранить объект в памяти в Rails и синхронизировать его между обоими запросами и между несколькими беспорядочными / какими-либо процессами?

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

Я хотел бы иметь решение для всех Rails, потому что его будет проще поддерживать и собирать.

Ответы [ 3 ]

1 голос
/ 19 января 2010

Одним из вариантов будет создание небольшого стоечного приложения, в которое вы загружаете данные. Логика для запросов и вычисления ваших данных будет в этом стоечном приложении. Вы можете использовать обычные HTTP-вызовы для localhost, чтобы передавать все, что вам нужно для передачи (сгенерированный HTML?

По сути, это обходной путь для нескольких процессов для вашего Rails-приложения. Я уверен, что есть лучшие решения, такие как memcached, базы данных NoSQL и т. Д.

1 голос
/ 18 июля 2011

Redis - инструмент, который вы ищете.

0 голосов
/ 19 января 2010

Похоже, вам может понадобиться распределенная хеш-таблица или что-то вроде CouchDB в качестве альтернативы СУБД.

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