|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Привет Всем!! Работаю над поисковой системой. По началу использовался двиг. Sphinx и Mysql, в качестве хранилища. Количество данных растет, производительность выборок падает, да и хочется по уму развиваться. Поэтому решился перейти на нереляционные распределенные хранилища. Из того, что нашел в сети: MemcacheDB, CouchDB, HBase, Hypertable Посоветуйте, пожалуйста, что выбрать? И оправдан ли подход использовать такие хранилища? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 13:34 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Опиши подробнее задачу. Что ищет твоя поисковая система, в каком месте и как сильно падает производительность? Какие объемы данных? Посмотри на этот раздел документации: 4.7. Distributed searching По поводу найденного тобой в сети могу сказать, что CouchDB - тот еще тормоз. У меня он на данных, которые в SQL базе заняли мегабайт 10 создал своих файлов на 250 мегабайт, а при попытке запустить простую view, которая строила выборку так, что ключом было одно из полей хранящихся документов, а значением - сам документ CouchDB трудился занимая весь мой core2duo 2,4 в течении 10 часов, насоздавал файлов на гигабайт, но по внутренней статистике обработал менее 30% документов. В общем результата я так и не дождался, так что для каких-либо выборок, кроме выборок по ключу он явно подходит слабо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 18:05 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
phprusОпиши подробнее задачу. Что ищет твоя поисковая система, в каком месте и как сильно падает производительность? Какие объемы данных? Посмотри на этот раздел документации: 4.7. Distributed searching По поводу найденного тобой в сети могу сказать, что CouchDB - тот еще тормоз. У меня он на данных, которые в SQL базе заняли мегабайт 10 создал своих файлов на 250 мегабайт, а при попытке запустить простую view, которая строила выборку так, что ключом было одно из полей хранящихся документов, а значением - сам документ CouchDB трудился занимая весь мой core2duo 2,4 в течении 10 часов, насоздавал файлов на гигабайт, но по внутренней статистике обработал менее 30% документов. В общем результата я так и не дождался, так что для каких-либо выборок, кроме выборок по ключу он явно подходит слабо. Поисковая система ищет товары и услуги в Мускуле (сайт справочной). Размер таблиц в пределах 1 000 000 – 7 000 000 строк. Объем всей базы, около 10Гб. Сайтик молодой совсем, но оперативно наполняется база. Наполнением занимаются менеджеры и партнеры. Вся база находится на 1 выделенном сервере. На нем находится и сайтец. Пока количество пользователей мало, до 500 хостов в день, работает все стабильненько. С ростом базы, производительность падает на cелектах, по сути они только и используются. Спасаюсь Sphinx, тем, что часть поиска возлагал на него, а не БД. И естественно, кеширование. Начальство может выделить для системы еще пару настольников. Вот и задумался, насчет распределенного хранилища данных. Хранилище пар ключ-значение, для этих целей вполне достаточно, плюс, удобство масштабирования. (Это все по материалам в сети). С подобными системами не сталкивался, это мой первый опыт. Спасибо за реальную информацию по CouchDB. Тогда не буду с этой СУБД связываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 20:52 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Имхо, проще памяти еще набить в существующий сервер, чем городить всякие прибамбасы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 21:05 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
miksoft Имхо, проще памяти еще набить в существующий сервер, чем городить всякие прибамбасы. +1 Или поставить ещё один сервер и балансировать нагрузку. Или два сервера. Или три. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 22:05 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Балансировать чем ??? А чем плохи так хранилища то? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 22:26 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
RelarnБалансировать чем ??? http://www.google.ru/search?hl=ru&source=hp&q=MySQL+load+balancing&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq= Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 22:32 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Relarn Поэтому решился перейти на нереляционные распределенные хранилища. То есть планы каждого селекта просмотрены и оптимизированы. Структура данных тоже уже заточена под запросы. Relarn И оправдан ли подход использовать такие хранилища?Не выжав максимум из имеющейся системы (MySql) хвататься за другую? То есть вы уверены что хранилище все сделает за вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 23:08 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спасибо!!! Как познавательный варинт, пригодится. Вот только вопрос мучает. Как Mysql будет вести, когда информации будет уже на сотни гигабайт??? Если сама СУБД будет уже туго работать с такими объемами, то и балансировочные серваки особо не спасут, как я понимаю. Ведь выделяют тока пару настольников, а не "полноценные" сервера. В случае же распределенного хранилища вся база "размазывается" по нескольким сервакам. В теории, эти хранилища как раз заточены под большие объемы информации и работу с ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 23:29 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
SERG1257Relarn Поэтому решился перейти на нереляционные распределенные хранилища. То есть планы каждого селекта просмотрены и оптимизированы. Структура данных тоже уже заточена под запросы. Relarn И оправдан ли подход использовать такие хранилища?Не выжав максимум из имеющейся системы (MySql) хвататься за другую? То есть вы уверены что хранилище все сделает за вас? Структуру разрабатывал не я, этот человек уволился. Но надо отдать должное, сделал не плохо. Сама база очень простенькая, для справочной то больше и не надо. Решил переходить на хранилища, потому Мускул используется как хранилище "ключ-значение". (JOIN-ов нет почти, да и те, считанные, случаи которые есть - работают шустро ). Разве в этом случае хранилища не эффективнее по скорости выборки будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2009, 23:37 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Я наверное такой молоток который все проблемы рассматривает как гвозди. Имеем - замедление селектов с ростом базы данных - сразу первое подозрение - что-то плохо проиндексировано. Стало быть применяем классический алгоритм оптимизации. Убедились что все нужные индексы созданы, ненужные убиты, все планы оптимальны, но производительности все равно не хватает - добавили железо (память или дополнительных сервера) Технология отлажена, результат предсказуем, специалистов много, в случае чего подскажут. Если у вас какая-то особая задача - пример LDAP - специальная база данных - смотрим в сторону специализированных средств. По моему мнению, поиск товаров и услуг - типичная задача для РСУБД, а у вас просто чешутся руки попробовать что-то другое крутое и экзотическое. Если анализ не проведен, то введение дополнительных средств (фич базы данных, нереляционных хранилищ и т.д.) может привести к успеху только случайно. Советую на соседнем форуме опубликовать схему данных, типичные тормозящие запросы и посмотреть что народ скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2009, 00:21 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
SERG1257Я наверное такой молоток который все проблемы рассматривает как гвозди. Имеем - замедление селектов с ростом базы данных - сразу первое подозрение - что-то плохо проиндексировано. Стало быть применяем классический алгоритм оптимизации. Убедились что все нужные индексы созданы, ненужные убиты, все планы оптимальны, но производительности все равно не хватает - добавили железо (память или дополнительных сервера) Технология отлажена, результат предсказуем, специалистов много, в случае чего подскажут. Если у вас какая-то особая задача - пример LDAP - специальная база данных - смотрим в сторону специализированных средств. По моему мнению, поиск товаров и услуг - типичная задача для РСУБД, а у вас просто чешутся руки попробовать что-то другое крутое и экзотическое. Если анализ не проведен, то введение дополнительных средств (фич базы данных, нереляционных хранилищ и т.д.) может привести к успеху только случайно. Советую на соседнем форуме опубликовать схему данных, типичные тормозящие запросы и посмотреть что народ скажет. Спасибо, так и поступлю:) А в целом, Вы, правы - действительно хотелось попробовать что-то новое. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2009, 15:11 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Что мешает сделать репликацию и рассредоточить селекты по репликам? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2009, 09:40 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
phprus В общем результата я так и не дождался, так что для каких-либо выборок, кроме выборок по ключу он явно подходит слабо. Так и надо по ключам всегда искать. Он для этого и оптимизирован. Тогда есть большой бенефит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2009, 23:12 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
daevaornphprus В общем результата я так и не дождался, так что для каких-либо выборок, кроме выборок по ключу он явно подходит слабо. Так и надо по ключам всегда искать. Он для этого и оптимизирован. Тогда есть большой бенефит. Не только для этого. По информации на официальном сайте он еще оптимизирован для заранее прописанных и сгенерированных самой CouchDB выборок, через механизм View. Но они на столько долго создаются и потребление памяти у них такое, что я бы 100 раз подумал о том стоит ли его использовать если ничего из заявленной функциональности, кроме доступа по тому-же ключу, что использовался при вставке в моих задачах применить не получилось из-за проблем со скорость. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2009, 15:06 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
phprusНе только для этого. По информации на официальном сайте он еще оптимизирован для заранее прописанных и сгенерированных самой CouchDB выборок, через механизм View. Но они на столько долго создаются и потребление памяти у них такое, что я бы 100 раз подумал о том стоит ли его использовать если ничего из заявленной функциональности, кроме доступа по тому-же ключу, что использовался при вставке в моих задачах применить не получилось из-за проблем со скорость. Вы что-то путаете - перманентные view считаются 1 раз, а потом по ключу вы можете из них получать какое-то подмножество данных с очень большой скоростью. На паре сотен тысяч документов, которые у меня были, процесс создания такого индекста занимал несколько минут. Не часов всё-таки. Потом инкрементально они очень быстро обновляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2009, 16:05 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
Я думаю, что достаточно разбить все данные по хешу на десяток серверов и запускать полнотекстовый поиск одновременно на каждом. Один из них да найдёт. Либо не найдёт ни один. Но! За счёт того, что объём данных, обрабатываемых каждым сервером будет ограничен, время такого распределённого запроса окажется небольшим. При этом, тот же самый Shinx и MySQL. Практически ничего не переписываете. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2009, 15:27 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
daevaornВы что-то путаете - перманентные view считаются 1 раз, а потом по ключу вы можете из них получать какое-то подмножество данных с очень большой скоростью. На паре сотен тысяч документов, которые у меня были, процесс создания такого индекста занимал несколько минут. Не часов всё-таки. Потом инкрементально они очень быстро обновляются. Возможно я что-то не правильно тестировал, но я так и не дождаться построения какой-либо более менее сложной view (Мне надо было вытащить одно поле документа в качестве ключа, и сопоставить ему примерно половину оставшихся полей документа). Объем данных, который сохранил CouchDB (сразу после вставки, до создания view) был порядка 250 мегабайт, а в sql базе это-же заняло мегабайт 15-20. View у меня считалась более 10 часов, но так и не досчиталась. На SQL базе без индексов аналогичный запрос выдавал результат за считанные секунды (примерно 400-500 тысяч маленьких записей из даты и трех чисел). При том когда из интереса я очистил CouchDB-базу и вставил в нее порядка нескольких сотен записей, то то-же самый view просчитался очень быстро. По этому мне и показалось, что не все так хорошо в CouchDB с view. А на счет выборок по id, который был присвоен документу в момент записи, то она действительно очень быстрая. Точно так-же быстро у меня считались и те тестовые view, в которых стадия reduce была аггрегатной функцией (к примеру сумма). Модератор: Тема перенесена из форума "Сравнение СУБД". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2009, 18:13 |
|
Распределенные хранилища
|
|||
---|---|---|---|
#18+
phprus, Как-то по описанию - совсем маленькая нагрузка. Может, попробовать оптимизировать БД или вместо MySQL поставить что-то более пристойное (Postgress, DB2 Express C - если из бесплатных). Про NoSQL стоит думать, если объем данных зайдет за десятки ТБ и будет нужно иметь тысячи (десятки тысяч) запросов в секунду. Да и то... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 03:02 |
|
|
start [/forum/topic.php?fid=48&fpage=14&tid=1857022]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 371ms |
0 / 0 |