Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Размышление о том, как лучше
Форумы портала PHP.SU » » Работа с СУБД » Размышление о том, как лучше

Страниц (1): [1]
 

1. antobra - 29 Июня, 2013 - 19:08:25 - перейти к сообщению
Приветствую,

Прошу поделиться вашим мнением о том, что будет лучше:

Дано: сейчас 1 таблица имеет 300 млн строк. И в дальнейшем будет увеличиваться в десятки раз (до 2-3 млрд).

База PostgreSQL. Запросы осуществляются только по ключу (id), никаких других выборок и сортировок нет. В одном запросе необходимо только 10 строк.

Вопрос: Что будет работать быстрее?

1. Оставить все как есть. Т.е. запрос пробегает по 1 таблице и отбирает 10 результатов по столбцу ID. Не представляю, как это будет происходить с млрд строк... :|
2. Партицировать. Например, грубо, на 300 таблиц по 1 млн. По логике запрос будет направляться сразу в нужные таблицы и скорость выдачи должна увеличиться. Но, запрос будет происходить сразу в 10 таблиц, а не в 1, что должно увеличить время выдачи. При этом, это отдельный сервер БД и соответственно прибавляется время на прохождение запроса от 1 сервера к другому.

Возможно у кого-то было похожее, что показал опыт?

Ну и координальный вариант
3. Использовать базу ключ-значение, которые больше подходят к моей задаче. Но ничего проверенного и хорошо поддерживаемого найти не смог. hbase? mongodb?
2. vanicon - 29 Июня, 2013 - 19:18:24 - перейти к сообщению
antobra
Думаю при таком объеме данных, нужно будет масштабировать бд по нескольким серверам, поэтому смотрите сами есть ли инструменты для этого у PostgreSQL, не знаю не юзал...
Или если нужно тока по ключу выбирать, то можно рассмотреть вариант nosql, есть не большой опыт с mongodb по ключу хорошо ищет, да и из коробки шардинг имеется, но учтите что и оперативку она жрет тоже не мало...
(Добавление)
antobra пишет:
И в дальнейшем будет увеличиваться в десятки раз (до 2-3 млрд).

А что за данные кстати?
Может и не нужно искать по такому огромному кол-во данных?
3. antobra - 29 Июня, 2013 - 19:29:49 - перейти к сообщению
vanicon пишет:
antobra
Думаю при таком объеме данных, нужно будет масштабировать бд по нескольким серверам, поэтому смотрите сами есть ли инструменты для этого у PostgreSQL, не знаю не юзал...
Или если нужно тока по ключу выбирать, то можно рассмотреть вариант nosql, есть не большой опыт с mongodb по ключу хорошо ищет, да и из коробки шардинг имеется, но учтите что и оперативку она жрет тоже не мало...


По nosql:

Я смотрел hbase и mongodb, остальные не приглянулись.

Тесты mongodb показывают, что в скорости я не сильно выиграю. Гугл выдают много сравнений и замеров.

hbase - более масштабна и серьезна, но я даже не смог ее настроить, плюс разработчики мэйл.ру писали, что при больших объемах она ведет себя не адекватно и даже платная поддержка не могла ничего объяснить (на хабре писали). И они допиливали hbase сами :/
4. Мелкий - 29 Июня, 2013 - 19:31:49 - перейти к сообщению
Дайте уточню на всякий случай, под партицированием вы имеете ввиду штатное постгресовое партицирование? http://www[dot]postgresql[dot]org/docs/9[dot][dot][dot]artitioning[dot]html
Почему запрос будет в 10 таблиц? Планоровщик запросов, конечно, тупой, но пинать только разделы, в которых эти данные и находятся - догадается.
5. antobra - 29 Июня, 2013 - 19:32:42 - перейти к сообщению
vanicon пишет:

А что за данные кстати?
Может и не нужно искать по такому огромному кол-во данных?


Небольшой поисковичок по каталогу
6. vanicon - 29 Июня, 2013 - 19:33:44 - перейти к сообщению
antobra
hbase тоже раньше смотрел, но документации на русском не нашел, и бросил...
antobra пишет:
Тесты mongodb показывают, что в скорости я не сильно выиграю. Гугл выдают много сравнений и замеров.

Преимущество mongo не в скорости, а в гибкости и масштабируемости из коробки, при таких объемах как у вас масштабирование обязательно понадобиться...
(Добавление)
antobra пишет:
Небольшой поисковичок по каталогу

И когда же там будет 1 миллиард строк? что за каталог такой громадный
7. antobra - 29 Июня, 2013 - 19:35:41 - перейти к сообщению
Мелкий пишет:
Дайте уточню на всякий случай, под партицированием вы имеете ввиду штатное постгресовое партицирование? http://www[dot]postgresql[dot]org/docs/9[dot][dot][dot]artitioning[dot]html
Почему запрос будет в 10 таблиц? Планоровщик запросов, конечно, тупой, но пинать только разделы, в которых эти данные и находятся - догадается.


Да, поэтому я интересуюсь, что будет быстрей - 10 строк в одной огромной таблице или 10 строк в 10 таблицах)

[если я правильно понимаю его работу]
(Добавление)
vanicon пишет:

hbase тоже раньше смотрел, но документации на русском не нашел, и бросил...


Документация на англ и мало, и сухо. При малейшей проблеме - помощи искать негде.

За 2013 доберется до 1 млрд. В нем много различных каталогов, предназначен для анализа данных в компаниях.
8. vanicon - 29 Июня, 2013 - 19:48:03 - перейти к сообщению
antobra пишет:
За 2013 доберется до 1 млрд. В нем много различных каталогов, предназначен для анализа данных в компаниях.

Ну раз так, тогда исходите из масштабируемости той или иной бд...
9. caballero - 29 Июня, 2013 - 19:52:12 - перейти к сообщению
для анализа данных (data miтing) используются специальные решения и структуры данных (в частности OLAP) у которых осуществляется предварительная агрегация данных.
глупо при каждом запросе молотить по милиарду записей

 

Powered by ExBB FM 1.0 RC1