2015-01-28 5 views
-1

Я ищу покупку набора данных местоположения с 50 миллионами записей. Каковы некоторые из проблем, с которыми я столкнусь, имея базу данных с этим множеством записей? Я планирую использовать Postgres on heroku. У меня будут проблемы с запущенными запросами, например, поблизости от lat lng? Как я могу заставить эти запросы работать очень быстро? Каковы некоторые из связанных с этим расходов на героку?Проблемы, связанные с наличием 50 миллионов строк в базе данных

+0

Vague до точки бесполезности. Какие шаблоны доступа и какие индексы? Какой параллелизм? Сколько вы тратите? –

+0

Размер не имеет значения, это то, что вы с ним делаете. И 50 миллионов записей не так уж много, я был бы обеспокоен, если бы в нашей базе данных было всего 50 миллионов записей! –

ответ

1

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

Что касается геопространственных запросов в PostGIS, вам также необходимо создать пространственные индексы этих данных, используя lat lon vals каждой записи, чтобы построить геометрию точек для заполнения поля геометрии. Наличие поля геометрии с пространственным индексом сделает пространственные запросы очень быстрыми.

Еще один способ помочь с доступом к скорости - использовать разбиение на таблицы и иметь файл данных каждого стола на отдельных точках монтирования, где разделы основаны на некотором местоположении (например, в префиксе geohash или что-то еще). Это довольно продвинутый материал, вам нужно будет много читать, чтобы реализовать это, если у вас не много опыта dba/geo.

Независимо от того, если вы ожидаете очень высокой параллелизма, вам понадобится очень мускулистая коробка. Альтернативно, если ваш прецедент по существу доступен только для чтения, вы можете использовать что-то вроде Apache SOLR Cloud или ElasticSearch для поддержки ваших запросов, в том числе запросов геометрии точки и запросов BBox и полигонов. ElasticSearch кластеризуется, поэтому он будет распространять запросы с помощью sharding и т. Д. SOLR Cloud сделает то же самое (по существу). Сейчас я разрабатываю кластер ElasticSearch из 10 узлов с 750 миллионами записей, каждый из которых является географической точкой и множеством других полей. Это сверхмощные альтернативы, которые могут не понадобиться, если ваш вариант использования не тот, где у вас высокий параллелизм, и большая загрузка нагрузка одновременно. Кроме того, если вам нужно использовать все аналитические функции postGis, функции st_ *, тогда вам, возможно, придется придерживаться PostGIS.

Я ничего не знаю о Heroku

НТН

+0

Я не уверен, что это особенно верно без цифр, а не таких терминов, как «очень высокий» или «очень быстрый». Справедливости ради следует отметить, что вопросник не предоставил никакой полезной информации –

+0

@RichardHuxton, и даже цифры не имели смысла, если мы действительно не понимаем, как выглядит каждая запись, и сколько из них возвращаются в целом за запрос и т. Д. И т. Д. ... мой ответ на тот же уровень абстракции, что и вопрос. Я на самом деле думаю, что люди просто пытаются выяснить, с чего начать, это не плохой ответ. – markg

+0

@markg нет, этот ответ фантастический и именно то, что я искал! Я не могу поделиться слишком большой информацией о точных запросах, которые мы будем использовать, но пока это то, что мне нужно. Просто разные вещи, которые следует учитывать при выполнении этого – Tyler