Обработка хранения миллиардов кусков информации?
Что является лучшим решением, если мне нужна база данных с более чем миллиардом объектов, и мне нужно иметь немедленный (или почти немедленный) доступ к любому из элементов в базе данных в любое время.
Эта база данных будет запрашиваться со скоростью около 1000 запросов в секунду. Строки в базе данных практически не связаны и, следовательно, не должны быть реляционными.
Если вам интересно, почему, это для симуляции движущихся элементов.
Я думал о чем-то вроде нескольких кластеров Cassandra с балансировкой нагрузки, доступ к которым осуществляется через кластер веб-серверов с балансировкой нагрузки.
Деньги - это фактор, поэтому чем дешевле, тем лучше. Нет никаких ограничений на программное обеспечение или инструмент, однако он должен быть с открытым исходным кодом.
Просто искать решение для базы данных, которое было бы хорошо для обработки смешного объема данных (совсем не обязательно быть реляционным) большим количеством пользователей.
Важно, чтобы он обрабатывал избыточность и сбои.
Просто идея высокого уровня, чтобы направить меня в правильном направлении, была бы великолепна.
2 ответа
Один из вариантов, который стоит рассмотреть, - это отображение ваших трехмерных координат на кривой заполнения пространства, эффективно представляющей точку в виде единого значения. Затем вы можете выполнить запросы диапазона Кассандры, чтобы получить очки в области.
Я видел, как это реализовано в 2D-пространстве раньше, я уверен, что это возможно и в 3D-пространстве.
Поскольку вам необходимо иметь возможность эффективно получать все объекты в трехмерном интервале (X_min <= X_obj <= X_max & Y_min <= Y_obj <= Y_max & Z_min <= Z_obj <= Z_max), я не уверен, насколько хорошо ключ -значение магазина как Кассандра подойдет вам. Возможно, стоит также взглянуть на MongoDB, поскольку я считаю, что это позволяет индексировать несколько полей и выполнять запросы на основе интервалов.