Найти - Пользователи
Полная версия: NoSQL
Начало » Базы данных » NoSQL
1 2 3 4 5 6 7 8
zheromo
o7412369815963
zheromo
A Availability - все клиенты могут одновременно читать и писать.
всмысле?
Может неверно выразился
разернуто можно почитать например тут http://softwaremaniacs.org/blog/2010/01/31/brewers-cap-theorem/
o7412369815963
zheromo
У Couch мы имеем AP, у Mongo - CP.
имхо, монга может работать в любом режиме (AP,CP,AC)
Lexander
o7412369815963
Не совсем: http://blog.mongodb.org/post/381927266/what-about-durability
zheromo
dimabest
zheromo понесло :)

Столько слов… а как сделать выборку по двум диапазонам - я так и не увидел. Необязательно одним запросом - можно хоть двумя десятками.
Если двумя:

view(view_name, startkey=sk1, endkey=ek1) + view(view_name, startkey=sk2, endkey=ek2)

как то так :)
zheromo
Lexander
zheromo
Можно подробнее в чем это выражается.
Мой собственный опыт оптимизации больших систем полностью подтверждается опытом действительно больших систем: http://www.insight-it.ru/highload, по сравнению с которыми мои работы - это просто муравьи на подоконнике. В двух словах, основные архитектурные проблемы (не путать с проблемами чисто аппаратными, например, disk IO) кроются в запросах к БД. Поэтому использование медленных интерфейсов к БД - табу для высоконагруженных систем.
Полностью согласен. Профилирование (основываюсь на профилировании собственных веб приложений) обычно показывает что процентов 80-90 времени исполнения приложение делает запросы к базе.

Lexander
zheromo
По поводу больших баз в данном случае мы имеем такие прелести как распределенность, инкрементную двунаправленную репликацию и т.д.
… которые тоже используют тот же “медленный” интерфейс доступа к данным.
Ну вот скажите, зачем городить между двумя базами промежуточный слой в виде вэб-сервера для обслуживания REST API? А ведь его не выкинешь, он вшит в СУБД!
Можно подробнее что подразумевается под медленным интерфейсом.
HTTP используется в качестве транспортного протокола (который кстати очень неплох), соответсвенно если бы использоваля какой-нибудь другой протокол, назовем его Х-протоколом, то для его реализации использовался бы Х-сервер.
Тот же mysql то же отдает данные на порту 3306 по своему протоколу и явно tcp-сервер который он использует тоже не получится выкинуть.


Lexander
zheromo
Couch по умолчанию слушает только localhost. Поэтому извне, даже из локальной сети на него не попадешь.
Я не к тому, что у Couch плохая модель безопасности. Нет, я имею ввиду то, что наличие встроенного в Couch DB вэб-сервера (а также встроенный механизм обслуживания пиковых нагрузок) легко позволяет ей быть открытой для доступа извне. Но круг задач, которые требуют именно такой реализации доступа очень мал.
Таким образом, такие полезные фичи Couch DB являются одновременно недостатками.
А в чем собственно недостаток? Если фича понадобилась - используем ее. Если нет - пользуемся как обычно.
Круг задач кстати намного больше, чем кажется, грубо говоря - любое приложение - имеющее веб интерфейс -если имеется в виду что конечный пользователь взаимодествует непосредственно с Couch без посредников на серверной стороне. Как пример подхода - http://www.ajatus.info/
Lexander
zheromo
Можно подробнее что подразумевается под медленным интерфейсом.
HTTP используется в качестве транспортного протокола (который кстати очень неплох), соответсвенно если бы использоваля какой-нибудь другой протокол, назовем его Х-протоколом, то для его реализации использовался бы Х-сервер.
Тот же mysql то же отдает данные на порту 3306 по своему протоколу и явно tcp-сервер который он использует тоже не получится выкинуть.
HTTP. Сравните скорость текстового протокола HTTP и бинарного MySQL. Вот поэтому сервер серверу рознь.
Использование одного и того же протокола для реплицирования и доступа к БД позволило CouchDB сократить объем кода со всеми вытекающими полезностями, но отрицательно сказалось на скорости реплицирования.
Это и есть упомянутый недостаток.
zheromo
Как пример подхода - http://www.ajatus.info/
Угу. Прямой доступ к БД с моими затратами? Спасибочки. ;)
Тем более - разработка в стадии беты.
Сравните с тем, что предлагают другие компании на рынке CRM Cloud Computing.
dimabest
zheromo
Если двумя:

view(view_name, startkey=sk1, endkey=ek1) + view(view_name, startkey=sk2, endkey=ek2)

как то так smile
Если просто сложить результаты запросов - получим “ИЛИ”, то есть или диски по цене 30-150, или объемом 250-1000 :)

Чтобы получить правильное “И” - нужно писать ручками код, который в цикле пробежит по каждой выборке и отфильтрует ненужное. Если диапазон широкий - прочитаем половину документов в RAM, а если широких диапазонов 2.. 3.. прочитаем в RAM больше чем лежит на диске :) Про производительность можно забыть.

Расскажите какое приложение (сложнее блога) можно написать с таким хранилищем? Самому интересно.
Lexander
Немного о разных NoSQL в разных проектах:
http://www.informationweek.com/news/business_intelligence/databases/showArticle.jhtml?articleID=227500071
zheromo
dimabest
zheromo
Если двумя:

view(view_name, startkey=sk1, endkey=ek1) + view(view_name, startkey=sk2, endkey=ek2)

как то так smile
Если просто сложить результаты запросов - получим “ИЛИ”, то есть или диски по цене 30-150, или объемом 250-1000 :)

Чтобы получить правильное “И” - нужно писать ручками код, который в цикле пробежит по каждой выборке и отфильтрует ненужное. Если диапазон широкий - прочитаем половину документов в RAM, а если широких диапазонов 2.. 3.. прочитаем в RAM больше чем лежит на диске :) Про производительность можно забыть.

Расскажите какое приложение (сложнее блога) можно написать с таким хранилищем? Самому интересно.
Apache CouchDb имеет полную интеграцию с Apache Lucene на уровне api вызовов.

Тогда можно будет делать запросы типа таких
http://localhost:5984/dbname/_fti/design_doc/view_name?q=field_name:value
http://localhost:5984/dbname/_fti/design_doc/view_name?q=field_name:value&sort=other_field
http://localhost:5984/dbname/_fti/design_doc/view_name?debug=true&sort=billing_size&q=body:document AND customer:[A TO C]
Стоит учесть, что приложениям где требуется более-менее нетривиальный поиск либо приходится использовать такую же интеграцию, либо поддерживать сложную архитектру. В качестве примера: каталог товаров на реляционной базе, каждый товар имеет много различных характиристик, у всех товаров они различны. С учетом жесткой схемы получаем кучу джойнов или кучу запросов к базе - с вытекающей производительностью и плохим масштабированием.
o7412369815963
коуч пал в моих глазх… (после всего выше сказаного)

вот ещё загон баз нашел
бенчмарк вставки данных
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB