Пространственные данные с mongodb или cassandra - PullRequest
26 голосов
/ 26 октября 2011

Я рассматриваю Подтверждение концепции для обработки больших объемов данных, таких как> 10 ГБ, для которых требуется как минимум 200+ операций записи в секунду и более 50+ операций чтения в секунду для пространственных данных.Это тоже растущая система.В настоящее время я рассматриваю возможность перемещения этих больших объемов данных в виде больших таблиц NoSql в виде db по соображениям производительности.

Я рассмотрел и более подробно рассмотрел MongoDB и cassandra.Что касается моего чтения,

Mongodb: - кажется, есть проблема с блокировкой записи - одна из публикаций в stackoverflow предложила эту базу данных, если нет необходимости в нескольких серверах - индексы хранятся в памяти.Таким образом, чем больше рост индекса, тем хуже производительность - преимущество в том, что Mongodb имеет прямую поддержку пространственных данных и индексации, а также такие функции, как поиск близлежащих мест и т. Д., - я вижу этот пост Cassandra или MongoDB для нашего местоположения на основеПриложение , предлагающее mongodb в качестве наилучшего выбора

Кассандра:
- Кажется, является лучшим среди связанных БД - Кажется, что имеет отличную производительность записи и чтения - Не поддерживает изначально пространственную индексациюно это может быть расширено с помощью геохэшинга

Мое сердце на самом деле обращается к mongodb из-за его хорошей документации и прямой поддержки пространственных данных.У кого-нибудь был плохой опыт использования mongodb для таких больших систем?На самом деле я вижу много сообщений на iostat mongodb для производительности.

Если mongodb не подходит, кто-то может дать некоторые советы по геохешированию с использованием cassandra?Я видел ссылку http://code.google.com/p/geospatialweb/ для создания хэшей.Но есть вопросы о том, как запросить и т.д.?

Ответы [ 4 ]

6 голосов
/ 30 мая 2014

Я понимаю, что это старый вопрос, и я знаю, что он не дает прямого ответа на ваш вопрос, но в зависимости от ваших запросов Cassandra может быть не лучшим вариантом, и заставить ваши запросы работать с индексацией в MongoDB может быть проблематично а также (по собственному опыту). Mongo имеет небольшое преимущество перед Cassandra для тяжелых геоданных и запросов imho.

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

1 голос
/ 01 июня 2019

ТЛ; др
Элассандра комбинация из Кассандры и ElasticSearch.

Небольшое обновление из будущего.

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

Первым, о чем я прочитал, был PostgreSQL + Postgis, но самый большой экземпляр ограничен макс. 200 000 операций записи в секунду.
Второй была геопространственная база данных Tile38 , которая может масштабировать запросы, но не записи. Единственный способ сделать это - вручную обработать данные.
Третий - MongoDB, потому что там вы можете найти хорошую документацию, поддерживающую геопространственную функциональность, которая мне нужна, но было трудно решить, сможете ли вы масштабировать записи.
Итак, последней базой данных была Кассандра. Эта база данных хорошо известна благодаря горизонтальному масштабированию записи и принятию сбоев. Компромисс с Cassandra заключается в том, что запрос данных имеет не очень хорошую производительность и не поддерживает гео-пространственную настройку из коробки. Для запроса данных в масштабе ElasticSearch является хорошим решением, как уже предлагал Tracker1. Сегодня я нашел новую базу данных, состоящую из Cassandra и ElasticSearch, которая называется Elassandra , которая позволяет производить запись в масштабе, а также считывать данные в масштабе почти в реальном времени. Пока для меня лучшее решение, с минимальными усилиями по настройке и обслуживанию.

1 голос
/ 07 декабря 2015

Попробуйте Cassandra + Solr. Это может быть полезно: http://digbigdata.com/geospatial-search-cassandra-datastax-enterprise/

С уважением, Гутам Кумар

0 голосов
/ 05 мая 2015

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

Наша текущая реализация выглядит как сегментирование информации, основанной на простом дереве (на основе сетки), и каждый фрагмент представляет собой индекс Lucene, и когда он увеличивается до определенного размера, индекс разделяется либо на x, либо на y. И так как у такого шарда есть двоичное представление (позиция в сетке состоит из двух битов, следующего уровня, следующих 2 битов и т. Д.), Поиск выдается по позиции, и на него будет отвечать любой префикс хэд-шарда, указывающий разрешение позиции / сетки , Пока простая система работает хорошо, но в данный момент продуктивно не используется.

...