|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Привет Всем! Посоветуйте, пожалуйста, не реляционную (встраиваемую) СУБД, для высоко посещаемого сайта. Требования: - Высокая скорость выборок / вставок - Репликация, масштабирование и работа с параллельными процессами. - Устойчивая работа с большими объемами информации Присматриваюсь к MemcacheDB, Tokyo Cabinet/ Tokyo Tyrant, MongoDB. MongoDB в целом хороша, но падает бд иногда((( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 00:19 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
ПомогитЕ, конечно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 00:21 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
а почему не реляционную? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 14:03 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
А если по делу написать? Сколько запросов вставки, сколько выборок, характерный объем вставки/выборки... Вы сначала указываете в требованиях "работа с большими объемами информации", и сразу же после называете как кандидат MemcacheDB - уж определитесь, большой объем данных у вас, или БД, помещающаяся в ОЗУ - или у вас на серверах терабайты ОЗУ? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 18:30 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Winnipuh Потому как не реляциионные (key-value хранилища) в разы быстрее. Как минимум не нужно парсить SQL и т.д MBG MemcacheDB в качестве хранилища использует BerkeleyDB. MemcacheDB и Memcache - это совсем разные вещи. Запросов около 50-70 в секунду. Из них большая часть на выборку, примерно около 35-50. Объем базы 38 ГБ. Все это на Mysql и уже очень туго работает. Мне важно протянуть железо, как можно дольше. Поэтому решил отказаться от SQL и всего остального 'сахара'. Уже оптимизировал выборки, активно работаю с кешом, но это спасет не надолго. Тестил такое key-value хранилище, как Redis. Очень понравилось по скорости, но оно прожорливо на ОЗУ, потому как хранит базу там и периодично дампует ее на винт(((. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 19:23 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
ICPWinnipuh Потому как не реляциионные (key-value хранилища) в разы быстрее. Как минимум не нужно парсить SQL и т.д MBG MemcacheDB в качестве хранилища использует BerkeleyDB. MemcacheDB и Memcache - это совсем разные вещи. Запросов около 50-70 в секунду. Из них большая часть на выборку, примерно около 35-50. Объем базы 38 ГБ. Все это на Mysql и уже очень туго работает. Мне важно протянуть железо, как можно дольше. Поэтому решил отказаться от SQL и всего остального 'сахара'. Уже оптимизировал выборки, активно работаю с кешом, но это спасет не надолго. Тестил такое key-value хранилище, как Redis. Очень понравилось по скорости, но оно прожорливо на ОЗУ, потому как хранит базу там и периодично дампует ее на винт(((. я задал вопрос потому, что "не реляционная" еще не означает некое подразумеваемое вами "ключ-значение" хранилище. Кроме реляционных бывают сетевые, иерархические, объектные БД...и каждая имеет свои + и -свою область применения... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 20:34 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Winnipuh, Сорри, согласен - не уточнил. В моем случае, будут оптимальны, наверное, ключ-значение, именно их и перечислил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2009, 21:28 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
ICPWinnipuh Потому как не реляциионные (key-value хранилища) в разы быстрее. Как минимум не нужно парсить SQL и т.д MBG MemcacheDB в качестве хранилища использует BerkeleyDB. MemcacheDB и Memcache - это совсем разные вещи. Насколько я себе понимаю, данные целиком кэшируются в ОЗУ, а изменения синхронизируются на диск. Хотя, может быть, это настраивается, но виденные мною тесты относились как раз к такому сценарию. ICPЗапросов около 50-70 в секунду. Из них большая часть на выборку, примерно около 35-50. Объем базы 38 ГБ. Все это на Mysql и уже очень туго работает. Мне важно протянуть железо, как можно дольше. Поэтому решил отказаться от SQL и всего остального 'сахара'. Уже оптимизировал выборки, активно работаю с кешом, но это спасет не надолго. Тестил такое key-value хранилище, как Redis. Очень понравилось по скорости, но оно прожорливо на ОЗУ, потому как хранит базу там и периодично дампует ее на винт(((. Нагрузка небольшая, с такой легко справятся PostgreSQL и SQLite. На первом у меня до пары сотен запросов в секунду отрабатывает, на втором - десятки тысяч запросов в секунду (разумеется, в основном селекты). При вашем количестве запросов на модификацию вообще нет никаких проблем - на диске 7200 rpm (120 оборотов в секунду) мы можем выполнить 60 полных синхронизаций записи, т.е. эскулайт на десктопном диске позволяет 60 пишуших транзакций в секунду без каких-либо ухищрений, а постгрес намного более, т.к. объединяет набор транзакций в одну операцию сброса буферов. Вот некоторые тесты упомянутых СУБД: Тестирование PostgreSQL 8.1 на больших таблицах Тестирование SQLite 3.6.17-mobigroup.2 на больших таблицах Тестирование PostgreSQL 8.1 на больших таблицах: денормализация Вероятно, вам следует оптимизировать построение отчетов, например, так Построение отчетов - Временные таблицы и виды Возможно и еще ускорить сложные выборки, но это потребует более сложных техник, в частности, Построение отчетов - Использование защищенного интерпретатора в pltcl Логическая оптимизация - Массивы Что же касается key->value СУБД, то применять их для ускорения выборок - нонсенс. Вот что касается скорости модификации, тут есть большие резоны. Но, если вы посчитаете, то размер БД за год при таких скоростях модификации должен , как минимум, составлять терабайты, иначе овчинка не стоит выделки. Вы работаете с весьма прожорливой, "падучей" и кривой MySQL, но проблема-то вовсе не в реляционных СУБД как таковых, а в конкретной реализации выбранной вами. Если вы в этом сомневаетесь, попробуйте выполнить вышеназванные тесты на нескольких разных СУБД на своем железе, сами увидите. P.S. C PostgreSQL нужно быть очень осторожным, когда размер _выборок_ превышает размер ОЗУ. Вы о размере выборок ничего не сказали, но упомянутое мною ограничение касается очень немногих проектов, так что у вас не слишком много шансов на него наткнуться... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 13:05 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
MBG Насколько я себе понимаю, данные целиком кэшируются в ОЗУ, а изменения синхронизируются на диск. Хотя, может быть, это настраивается, но виденные мною тесты относились как раз к такому сценарию. Посмотрел, полное кэширование не является необходимым, можно настроить объем shared memory для berkeleydb, а полное кэширование это в Redis. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 17:06 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
MBG, Спасибо большое за ссылки. Очень полезно! авторВы работаете с весьма прожорливой, "падучей" и кривой MySQL, но проблема-то вовсе не в реляционных СУБД как таковых, а в конкретной реализации выбранной вами. Если вы в этом сомневаетесь, попробуйте выполнить вышеназванные тесты на нескольких разных СУБД на своем железе, сами увидите. Даже не сомневаюсь насчет Mysql. Выбрал ее, лишь потому, что знал лучше всего. Теперь хочу сменить БД. авторЧто же касается key->value СУБД, то применять их для ускорения выборок - нонсенс. Вот что касается скорости модификации, тут есть большие резоны. Не очень понял. А разве выборки на key-value хранилищах происходят медленнее???? Судя по тестам, любое хранилище работает на выборках в разы шустрее. И количество запросов в секунду выдерживают гораздо больше. авторНо, если вы посчитаете, то размер БД за год при таких скоростях модификации должен , как минимум, составлять терабайты, иначе овчинка не стоит выделки.??? То есть на больших объемах будет существенное падение скорости выборок??? У меня в основная масса запросов - это селекты с условиями. Проблема, что у мускула нет нормальных средств для работы с деревьями/графами. Поэтому поиск по древовидной структуре сводится к итеративной выборки элементов, на каждом уровне дерева. Даже если помучаться и сделать на хранимых процедурах - не спасет, они работают медленнее чем клиентский скрипт на СИ. Кеширование спасает, но не надолго - связи в дереве периодично модифицируются. Вот поэтому глянул в сторону хранилищ "ключ-значение". Все древовидную структуру перенести в них, а обрабатывать скриптом на СИ. Redis шустр, но не подходит - у меня озу 4Гб всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 21:35 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Выборки в SQL СУБД выполняются практически с той же скоростью. А вот при агрегации на уровне приложения вы можете существенно потерять в эффективности, т.к. придется много данных передавать из БД в приложение. Для БД, увеличивающейся на 10 ГБ в год, характерна нагрузка порядка единиц запросов модификации в секунду. При том, что реляционные СУБД на современных десктопах выдерживают в сотни раз большие нагрузки. Потому нет никаких разумных причин отказываться от использования реляционных СУБД. Для работы с деревом имеет смысл сделать единственным запросом такую выборку, по которой можно построить дерево на уровне приложения (если таблица небольшая, порядка тысяч записей, может даже оказаться оправданным прочитать ее целиком). Рекурсивный SQL выдержат только встраиваемые СУБД (SQLite, BerkeleyDB), в которых prepared запрос выполняется чрезвычайно быстро. При использовании хранимой функции можно в ней кэшировать запрос или некоторые часто используемые выборки, вариантов оптимизации много. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2009, 23:30 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
MBG, Код: plaintext
А по тестам скорость выборок очень различна. Небольшой материал по этому поводу Redis vs MySQL vs Tokyo Tyrant А вот при агрегации на уровне приложения вы можете существенно потерять в эффективности, т.к. придется много данных передавать из БД в приложение.[/src] Согласен, но вот если сама БД встроена в приложение, разве скорость выборок будет ниже чем при использование хранимых процедур, например у PostgreSQL ??? Код: plaintext
Как и предстоит переезд на другую СУБД, то буду делать все аккуратно и неспешно. А пока изучаю возможные альтернативы SQL. Код: plaintext
Я так и делаю, есть промежуточные таблицы в которых кешируются пути. Проблема в том что древовидная структура из нескольких миллионов записей. В идеале хотелось бы осуществлять поиск по всему дереву, но это сейчас накладно итеративно выдергивать его с базы и поэтому стоит ограничение на 3 уровня. Код: plaintext 1.
А вот с рекурсией вообще удобно. Даже не знал, что SQLite и BerkeleyDB имеют ее в распоряжении. Спасибо, много знаний черпаю из Ваших постов! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2009, 00:43 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
А вы попробуйте тесты для SQLite. 10 000 запросов в секунду это немного для встраиваемой реляционной СУБД. Хранимые процедуры в PostgreSQL выполняют запросы медленнее, чем те же запросы исполняются в SQLite. Как минимум, потому, что первый - версионник, и имеет некоторый оверхед из-за необходимости анализировать версии записей. Далее, при агрегации на уровне СУБД нет необходимости хранить все данные в памяти - их можно агрегировать "на лету" (POstgreSQL, насколько мне известно, этого делать не умеет), а передавая их в приложение или хранимую процедуру, мы опять же выполняем лишние копирования данных, что требует выделения и очистки памяти и проч. действия. Встраиваемые СУБД хороши тем, что в них обычно обеспечена эффективная работа с данными на диске, в то время как клиент-серверные реализации запихивают все исходные данные в кэш, надеясь на то, что они еще понадобятся - при этом, если данные не помещаются в кэш или выборки оперируют разными данными, возникают большие проблемы. SQLite и BerkeleyDB не имеют встроенной рекурсии. Но prepared запросы в них позволяют извлекать данные настолько быстро, что набор последовательных запросов, извлекающих одну строку, почти эквивалентен одному запросу, извлекающему набор строк. Как пример, поиск направления для набранного номера в телефонном биллинге (SQLite): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2009, 01:16 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
MBG, Тогда потестю на своих железках SQLite и Tokyo Cabinet. Интересно посмотреть, насколько будет отличаться результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2009, 13:17 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Cache'. http://www.intersystems.ru/ http://www.intersystems.ru/cache/devcorner/index.html http://www.citforum.ru/seminars/cbd99/cache.shtml можно получить экземпляр субд для тестирования (бесплатно). субд является объектной, при этом, поддерживает три вида доступа к данным, хранящимся в ней: прямой доступ - самый быстрый доступ через sql объектный доступ и еще один немаловажный плюс - для Cache' есть раздел форума на данном сайте :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2009, 11:57 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
neznau, А каше разве 'шустрее' Mysql ??? имхо он скорее навороченнее и помедленнее. Хотя, могу ошибаться:) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2009, 20:21 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Если нет алергии на отечественные "накаленно-гаражные" разработки присмотритесь к HyTech выручала многократно в случаях существенного превосходства поисковых запросов над запросами на модификацию/добавление, и кстати прямой доступ(без sql) специфицирован изначально, первое знакомство было в соревновании и сокрушительной победе: EC1036(ADABAS) и 486DX2-66(HyTech) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2009, 17:15 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Hello, pureproft! You wrote on Wed, 02 Dec 09 14:15:24 GMT: pureproft p>первое знакомство было в соревновании и сокрушительной победе: EC1036(ADABAS) и 486DX2-66(HyTech) на дворе XXI-век. кому нужно это окаменевшее ископаемое... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2009, 18:53 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
nist.ru ещё не окаменел и речь шла о первом знакомстве а при последнем HyTech не уступал на технике существенно скромней чем конкурент ORACL на монстре от SimesNix... про алергию я упоминал без маски не подходить.... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2009, 19:01 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
pureproft, Спасибо...гляну, прям интресно стало) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2009, 17:13 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
ICPpureproft, Спасибо...гляну, прям интресно стало) кстати обнаружил кроме нист hytechdb.ru и openinfotech.ru если будете тестить отпешитесь о впечатлениях.... жалко, что за столько лет не довели до нормальной коробочной версии Модератор: Тема перенесена из форума "Другие СУБД". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 00:02 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
А что за запросы-то такие, что 50 запросов в секунду уже ощутимо тормозят сервер? Может, все-таки попробовать или БД настроить или попробовать более серьезные БД (Postgress, DB2)? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 04:10 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
OnsiteА каше разве 'шустрее' Mysql ??? имхо он скорее навороченнее и помедленнее. Хотя, могу ошибаться:)Аж вздрогнул, когда такое прочитал. Жуть несусветная, не обижайтесь Угробить производительность, конечно, можно и на каше. И даже очень просто, автоматически не всегда оптимизуруется как надо. Но это как раз из тех субд, которая позволит работать на очень "низком уровне", причем, когда вам нужно, поднимаясь до sql и объектов. Или наоборот, работая с объектами или sql опускаться до нижнего уровня. Плюс очень гибкая модель данных, можно накрутить туда все, что хотите. (В том числе и ваши ключ-значение, это в ней даже роднее, чем sql или объекты) На каше можно эмулировать другие СУДБ, каше же вряд ли кто сэмулирует. Попробуйте, она правда денюх стоит. Лягух в нашем болоте достаточно, если что - поможем. Кстати, служба поддержки у них тоже хорошая, все хвалят. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 19:16 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
Наверно, я неправильно расставил акценты, но каше - это очень большая гибкость и большой контроль над приложением. Я не знаю, сколько она там может обрабатывать запросов (Олег Оленин разгонял скорость до 80 тыс запросов в секунду на запись, но это нужно постараться) Что касается скорости приложений, то могу сравнить сервер управления AVP на mySQL и MSSQL. На MSSQL работает в несколько раз быстрее. Может, конечно, на mysql неправильно что-то написали, не знаю. Также могу сравнить наши внутрение приложения на mssql и каше, архитектура приложений разная, данных в базе каше намного больше, разработкой на mssql руководил человек, знающий ее очень хорошо, тем не менее, приложение на каше работает быстрее. Может это и не очень корректно, сравнивать приложения с разной архитектурой, но еще более некорректно сравнивать каше в той же архитектуре приложений, что и sql сервера. Так как каше как раз берет за счет другой архитектуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2010, 20:25 |
|
Помогити с нереляционными(встраиваемыми) СУБД
|
|||
---|---|---|---|
#18+
В поддержку слов Блок А.Н. приведу несколько ссылок: Интервью " Универсальные СУБД, способные решать специализированные задачи " Universal NoSQL Engine (pdf) Аналитические и технологические обзоры PS: согласитесь удобно и выгодно, когда в одной СУБД совмещены возможности SQL , NoSQL и ООП . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2010, 15:25 |
|
|
start [/forum/topic.php?fid=48&tid=1857019]: |
0ms |
get settings: |
18ms |
get forum list: |
15ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
38ms |
get topic data: |
116ms |
get forum data: |
1ms |
get page messages: |
984ms |
get tp. blocked users: |
2ms |
others: | 340ms |
total: | 1516ms |
0 / 0 |