Гость
Map
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Помогити с нереляционными(встраиваемыми) СУБД / 25 сообщений из 40, страница 1 из 2
12.11.2009, 00:19
    #36305472
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Привет Всем!
Посоветуйте, пожалуйста, не реляционную (встраиваемую) СУБД, для высоко посещаемого сайта.

Требования:

- Высокая скорость выборок / вставок
- Репликация, масштабирование и работа с параллельными процессами.
- Устойчивая работа с большими объемами информации

Присматриваюсь к MemcacheDB, Tokyo Cabinet/ Tokyo Tyrant, MongoDB. MongoDB в целом хороша, но падает бд иногда(((
...
Рейтинг: 0 / 0
12.11.2009, 00:21
    #36305473
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
ПомогитЕ, конечно :)
...
Рейтинг: 0 / 0
12.11.2009, 14:03
    #36306769
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
а почему не реляционную?
...
Рейтинг: 0 / 0
12.11.2009, 18:30
    #36307544
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
А если по делу написать? Сколько запросов вставки, сколько выборок, характерный объем вставки/выборки... Вы сначала указываете в требованиях "работа с большими объемами информации", и сразу же после называете как кандидат MemcacheDB - уж определитесь, большой объем данных у вас, или БД, помещающаяся в ОЗУ - или у вас на серверах терабайты ОЗУ? :-)
...
Рейтинг: 0 / 0
12.11.2009, 19:23
    #36307678
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Winnipuh

Потому как не реляциионные (key-value хранилища) в разы быстрее. Как минимум не нужно парсить SQL и т.д


MBG

MemcacheDB в качестве хранилища использует BerkeleyDB. MemcacheDB и Memcache - это совсем разные вещи. Запросов около 50-70 в секунду. Из них большая часть на выборку, примерно около 35-50. Объем базы 38 ГБ. Все это на Mysql и уже очень туго работает.

Мне важно протянуть железо, как можно дольше. Поэтому решил отказаться от SQL и всего остального 'сахара'. Уже оптимизировал выборки, активно работаю с кешом, но это спасет не надолго. Тестил такое key-value хранилище, как Redis. Очень понравилось по скорости, но оно прожорливо на ОЗУ, потому как хранит базу там и периодично дампует ее на винт(((.
...
Рейтинг: 0 / 0
12.11.2009, 20:34
    #36307795
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
ICPWinnipuh

Потому как не реляциионные (key-value хранилища) в разы быстрее. Как минимум не нужно парсить SQL и т.д


MBG

MemcacheDB в качестве хранилища использует BerkeleyDB. MemcacheDB и Memcache - это совсем разные вещи. Запросов около 50-70 в секунду. Из них большая часть на выборку, примерно около 35-50. Объем базы 38 ГБ. Все это на Mysql и уже очень туго работает.

Мне важно протянуть железо, как можно дольше. Поэтому решил отказаться от SQL и всего остального 'сахара'. Уже оптимизировал выборки, активно работаю с кешом, но это спасет не надолго. Тестил такое key-value хранилище, как Redis. Очень понравилось по скорости, но оно прожорливо на ОЗУ, потому как хранит базу там и периодично дампует ее на винт(((.

я задал вопрос потому, что "не реляционная" еще не означает некое подразумеваемое вами "ключ-значение" хранилище.
Кроме реляционных бывают сетевые, иерархические, объектные БД...и каждая имеет свои + и -свою область применения...
...
Рейтинг: 0 / 0
12.11.2009, 21:28
    #36307865
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Winnipuh,

Сорри, согласен - не уточнил. В моем случае, будут оптимальны, наверное, ключ-значение, именно их и перечислил.
...
Рейтинг: 0 / 0
13.11.2009, 13:05
    #36309063
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
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 нужно быть очень осторожным, когда размер _выборок_ превышает размер ОЗУ. Вы о размере выборок ничего не сказали, но упомянутое мною ограничение касается очень немногих проектов, так что у вас не слишком много шансов на него наткнуться...
...
Рейтинг: 0 / 0
13.11.2009, 17:06
    #36309877
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
MBG
Насколько я себе понимаю, данные целиком кэшируются в ОЗУ, а изменения синхронизируются на диск. Хотя, может быть, это настраивается, но виденные мною тесты относились как раз к такому сценарию.


Посмотрел, полное кэширование не является необходимым, можно настроить объем shared memory для berkeleydb, а полное кэширование это в Redis.
...
Рейтинг: 0 / 0
13.11.2009, 21:35
    #36310211
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
MBG, Спасибо большое за ссылки. Очень полезно!

авторВы работаете с весьма прожорливой, "падучей" и кривой MySQL, но проблема-то вовсе не в реляционных СУБД как таковых, а в конкретной реализации выбранной вами. Если вы в этом сомневаетесь, попробуйте выполнить вышеназванные тесты на нескольких разных СУБД на своем железе, сами увидите.

Даже не сомневаюсь насчет Mysql. Выбрал ее, лишь потому, что знал лучше всего. Теперь хочу сменить БД.

авторЧто же касается key->value СУБД, то применять их для ускорения выборок - нонсенс. Вот что касается скорости модификации, тут есть большие резоны.


Не очень понял. А разве выборки на key-value хранилищах происходят медленнее???? Судя по тестам, любое хранилище работает на выборках в разы шустрее. И количество запросов в секунду выдерживают гораздо больше.

авторНо, если вы посчитаете, то размер БД за год при таких скоростях модификации должен , как минимум, составлять терабайты, иначе овчинка не стоит выделки.???

То есть на больших объемах будет существенное падение скорости выборок???

У меня в основная масса запросов - это селекты с условиями. Проблема, что у мускула нет нормальных средств для работы с деревьями/графами. Поэтому поиск по древовидной структуре сводится к итеративной выборки элементов, на каждом уровне дерева. Даже если помучаться и сделать на хранимых процедурах - не спасет, они работают медленнее чем клиентский скрипт на СИ. Кеширование спасает, но не надолго - связи в дереве периодично модифицируются.

Вот поэтому глянул в сторону хранилищ "ключ-значение". Все древовидную структуру перенести в них, а обрабатывать скриптом на СИ.
Redis шустр, но не подходит - у меня озу 4Гб всего.
...
Рейтинг: 0 / 0
13.11.2009, 23:30
    #36310271
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Выборки в SQL СУБД выполняются практически с той же скоростью. А вот при агрегации на уровне приложения вы можете существенно потерять в эффективности, т.к. придется много данных передавать из БД в приложение.

Для БД, увеличивающейся на 10 ГБ в год, характерна нагрузка порядка единиц запросов модификации в секунду. При том, что реляционные СУБД на современных десктопах выдерживают в сотни раз большие нагрузки. Потому нет никаких разумных причин отказываться от использования реляционных СУБД.

Для работы с деревом имеет смысл сделать единственным запросом такую выборку, по которой можно построить дерево на уровне приложения (если таблица небольшая, порядка тысяч записей, может даже оказаться оправданным прочитать ее целиком). Рекурсивный SQL выдержат только встраиваемые СУБД (SQLite, BerkeleyDB), в которых prepared запрос выполняется чрезвычайно быстро. При использовании хранимой функции можно в ней кэшировать запрос или некоторые часто используемые выборки, вариантов оптимизации много.
...
Рейтинг: 0 / 0
14.11.2009, 00:43
    #36310325
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
MBG,

Код: plaintext
Выборки в SQL СУБД выполняются практически с той же скоростью. 

А по тестам скорость выборок очень различна. Небольшой материал по этому поводу Redis vs MySQL vs Tokyo Tyrant

А вот при агрегации на уровне приложения вы можете существенно потерять в эффективности, т.к. придется много данных передавать из БД в приложение.[/src]
Согласен, но вот если сама БД встроена в приложение, разве скорость выборок будет ниже чем при использование хранимых процедур, например у PostgreSQL ???

Код: plaintext
Потому нет никаких разумных причин отказываться от использования реляционных СУБД.

Как и предстоит переезд на другую СУБД, то буду делать все аккуратно и неспешно. А пока изучаю возможные альтернативы SQL.

Код: plaintext
Для работы с деревом имеет смысл сделать единственным запросом такую выборку, по которой можно построить дерево на уровне приложения (если таблица небольшая, порядка тысяч записей, может даже оказаться оправданным прочитать ее целиком).

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


Код: plaintext
1.
Рекурсивный SQL выдержат только встраиваемые СУБД (SQLite, BerkeleyDB), в которых prepared запрос выполняется чрезвычайно быстро. При использовании хранимой функции можно в ней кэшировать запрос или некоторые часто используемые выборки, вариантов оптимизации 
много.

А вот с рекурсией вообще удобно. Даже не знал, что SQLite и BerkeleyDB имеют ее в распоряжении.

Спасибо, много знаний черпаю из Ваших постов!
...
Рейтинг: 0 / 0
14.11.2009, 01:16
    #36310347
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
А вы попробуйте тесты для SQLite. 10 000 запросов в секунду это немного для встраиваемой реляционной СУБД.

Хранимые процедуры в PostgreSQL выполняют запросы медленнее, чем те же запросы исполняются в SQLite. Как минимум, потому, что первый - версионник, и имеет некоторый оверхед из-за необходимости анализировать версии записей. Далее, при агрегации на уровне СУБД нет необходимости хранить все данные в памяти - их можно агрегировать "на лету" (POstgreSQL, насколько мне известно, этого делать не умеет), а передавая их в приложение или хранимую процедуру, мы опять же выполняем лишние копирования данных, что требует выделения и очистки памяти и проч. действия. Встраиваемые СУБД хороши тем, что в них обычно обеспечена эффективная работа с данными на диске, в то время как клиент-серверные реализации запихивают все исходные данные в кэш, надеясь на то, что они еще понадобятся - при этом, если данные не помещаются в кэш или выборки оперируют разными данными, возникают большие проблемы.

SQLite и BerkeleyDB не имеют встроенной рекурсии. Но prepared запросы в них позволяют извлекать данные настолько быстро, что набор последовательных запросов, извлекающих одну строку, почти эквивалентен одному запросу, извлекающему набор строк.
Как пример, поиск направления для набранного номера в телефонном биллинге (SQLite):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        set prefix [string range $number  0  $max- 1 ]
        while {[string length $prefix] >= $min} {
            # если указанный индекс не будет найден, запрос вернет ошибку - используем для гарантированного предотвращения неиндексированного поиска
            set rowid [$db onecolumn {select rowid from const_telephony_direction indexed by const_telephony_direction_complex_idx
                                        where name=$name and destcode=$prefix and delete_date IS NULL}]
            if {$rowid ne {}} break
            set prefix [string range $prefix  0  end- 1 ]
        }
СУБД SQLite закэширует SQL-запрос и каждый последующий вызов уже не парсит SQL код, выполняется только выборка согласно значениям параметров запроса. В постгресе эквивалентный код необходимо поместить в хранимую процедуру, которая при первом обращении подготовит prepared запрос и сохранит его в глобальной переменной, а возвращаемый результат представить в виде некоторой структуры данных - соответственно, больше работы на выполнение запроса, да еще нужно формировать данные в функции и потом их разбирать в приложении (функции, возвращающие набор строк, работают существенно медленнее, чем возвращающие единственное значение).
...
Рейтинг: 0 / 0
14.11.2009, 13:17
    #36310523
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
MBG,

Тогда потестю на своих железках SQLite и Tokyo Cabinet. Интересно посмотреть, насколько будет отличаться результат.
...
Рейтинг: 0 / 0
15.11.2009, 11:57
    #36311142
neznau
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Cache'.

http://www.intersystems.ru/

http://www.intersystems.ru/cache/devcorner/index.html

http://www.citforum.ru/seminars/cbd99/cache.shtml

можно получить экземпляр субд для тестирования (бесплатно).

субд является объектной, при этом, поддерживает три вида доступа к данным, хранящимся в ней:
прямой доступ - самый быстрый
доступ через sql
объектный доступ

и еще один немаловажный плюс - для Cache' есть раздел форума на данном сайте :)
...
Рейтинг: 0 / 0
21.11.2009, 20:21
    #36324001
Onsite
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
neznau,

А каше разве 'шустрее' Mysql ??? имхо он скорее навороченнее и помедленнее. Хотя, могу ошибаться:)
...
Рейтинг: 0 / 0
02.12.2009, 17:15
    #36344136
pureproft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Если нет алергии на отечественные "накаленно-гаражные" разработки присмотритесь к HyTech выручала многократно в случаях существенного превосходства поисковых запросов над запросами на модификацию/добавление, и кстати прямой доступ(без sql) специфицирован изначально, первое знакомство было в соревновании и сокрушительной победе:
EC1036(ADABAS) и 486DX2-66(HyTech)
...
Рейтинг: 0 / 0
02.12.2009, 18:53
    #36344440
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
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
...
Рейтинг: 0 / 0
02.12.2009, 19:01
    #36344456
pureproft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
nist.ru ещё не окаменел и речь шла о первом знакомстве а при последнем HyTech не уступал на технике существенно скромней чем конкурент ORACL на монстре от SimesNix...
про алергию я упоминал без маски не подходить.... :)
...
Рейтинг: 0 / 0
05.12.2009, 17:13
    #36350010
ICP
ICP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
pureproft,
Спасибо...гляну, прям интресно стало)
...
Рейтинг: 0 / 0
06.12.2009, 00:02
    #36350323
pureproft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
ICPpureproft,
Спасибо...гляну, прям интресно стало)
кстати обнаружил кроме нист hytechdb.ru и openinfotech.ru если будете тестить отпешитесь о впечатлениях.... жалко, что за столько лет не довели до нормальной коробочной версии

Модератор: Тема перенесена из форума "Другие СУБД".
...
Рейтинг: 0 / 0
15.11.2010, 04:10
    #36956081
DPH3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
А что за запросы-то такие, что 50 запросов в секунду уже ощутимо тормозят сервер? Может, все-таки попробовать или БД настроить или попробовать более серьезные БД (Postgress, DB2)?
...
Рейтинг: 0 / 0
15.11.2010, 19:16
    #36958119
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
OnsiteА каше разве 'шустрее' Mysql ??? имхо он скорее навороченнее и помедленнее. Хотя, могу ошибаться:)Аж вздрогнул, когда такое прочитал. Жуть несусветная, не обижайтесь

Угробить производительность, конечно, можно и на каше. И даже очень просто, автоматически не всегда оптимизуруется как надо.
Но это как раз из тех субд, которая позволит работать на очень "низком уровне", причем, когда вам нужно, поднимаясь до sql и объектов. Или наоборот, работая с объектами или sql опускаться до нижнего уровня. Плюс очень гибкая модель данных, можно накрутить туда все, что хотите.
(В том числе и ваши ключ-значение, это в ней даже роднее, чем sql или объекты)
На каше можно эмулировать другие СУДБ, каше же вряд ли кто сэмулирует.

Попробуйте, она правда денюх стоит. Лягух в нашем болоте достаточно, если что - поможем.
Кстати, служба поддержки у них тоже хорошая, все хвалят.
...
Рейтинг: 0 / 0
15.11.2010, 20:25
    #36958237
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
Наверно, я неправильно расставил акценты, но каше - это очень большая гибкость и большой контроль над приложением.
Я не знаю, сколько она там может обрабатывать запросов (Олег Оленин разгонял скорость до 80 тыс запросов в секунду на запись, но это нужно постараться)

Что касается скорости приложений, то могу сравнить сервер управления AVP на mySQL и MSSQL. На MSSQL работает в несколько раз быстрее. Может, конечно, на mysql неправильно что-то написали, не знаю.
Также могу сравнить наши внутрение приложения на mssql и каше, архитектура приложений разная, данных в базе каше намного больше, разработкой на mssql руководил человек, знающий ее очень хорошо, тем не менее, приложение на каше работает быстрее.
Может это и не очень корректно, сравнивать приложения с разной архитектурой, но еще более некорректно сравнивать каше в той же архитектуре приложений, что и sql сервера. Так как каше как раз берет за счет другой архитектуры.
...
Рейтинг: 0 / 0
06.12.2010, 15:25
    #36997426
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогити с нереляционными(встраиваемыми) СУБД
В поддержку слов Блок А.Н. приведу несколько ссылок:
Интервью " Универсальные СУБД, способные решать специализированные задачи "

Universal NoSQL Engine (pdf)

Аналитические и технологические обзоры

PS: согласитесь удобно и выгодно, когда в одной СУБД совмещены возможности SQL , NoSQL и ООП .
...
Рейтинг: 0 / 0
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Помогити с нереляционными(встраиваемыми) СУБД / 25 сообщений из 40, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]