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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Размышление о том, как лучше

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
antobra
Отправлено: 29 Июня, 2013 - 19:08:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




Приветствую,

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

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

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

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

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

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

Ну и координальный вариант
3. Использовать базу ключ-значение, которые больше подходят к моей задаче. Но ничего проверенного и хорошо поддерживаемого найти не смог. hbase? mongodb?

(Отредактировано автором: 29 Июня, 2013 - 19:10:13)

 
 Top
vanicon
Отправлено: 29 Июня, 2013 - 19:18:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




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

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


-----
Так было, так есть и так будет
 
 Top
antobra
Отправлено: 29 Июня, 2013 - 19:29:49
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




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


По nosql:

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

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

hbase - более масштабна и серьезна, но я даже не смог ее настроить, плюс разработчики мэйл.ру писали, что при больших объемах она ведет себя не адекватно и даже платная поддержка не могла ничего объяснить (на хабре писали). И они допиливали hbase сами :/

(Отредактировано автором: 29 Июня, 2013 - 19:31:06)

 
 Top
Мелкий Супермодератор
Отправлено: 29 Июня, 2013 - 19:31:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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


-----
PostgreSQL DBA
 
 Top
antobra
Отправлено: 29 Июня, 2013 - 19:32:42
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




vanicon пишет:

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


Небольшой поисковичок по каталогу
 
 Top
vanicon
Отправлено: 29 Июня, 2013 - 19:33:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




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

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

И когда же там будет 1 миллиард строк? что за каталог такой громадный


-----
Так было, так есть и так будет
 
 Top
antobra
Отправлено: 29 Июня, 2013 - 19:35:41
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




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


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

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

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


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

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



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




antobra пишет:
За 2013 доберется до 1 млрд. В нем много различных каталогов, предназначен для анализа данных в компаниях.

Ну раз так, тогда исходите из масштабируемости той или иной бд...


-----
Так было, так есть и так будет
 
 Top
caballero
Отправлено: 29 Июня, 2013 - 19:52:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




для анализа данных (data miтing) используются специальные решения и структуры данных (в частности OLAP) у которых осуществляется предварительная агрегация данных.
глупо при каждом запросе молотить по милиарду записей


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB