Зачем NoSQL программистам

Jun 10, 2010 11:58


В последнее время, как видим, пошла мода на NoSQL.
Термин, собака, размыт до черезвычайности, под ним все подразумевают разное, кто во что горазд - кто-то интересуется переработанными RDBMS типа BigTable, кто-то болеет за key-value storage, парни с PostgreSQL вообще пошутили на тему QUEL.

Сконцентрируемся всё-таки на основном значении: системы ( Read more... )

программизм

Leave a comment

Comments 221

(The comment has been removed)

asinitsyn June 10 2010, 13:17:37 UTC
Написал свое мнение по этому поводу

http://asinitsyn.livejournal.com/33307.html

Вкратце - последствия описаны верно, но у меня свой взгляд на причины.

Reply


octo47 June 10 2010, 11:21:47 UTC
отлично. прямо в точку.

Reply


Отличный пост. gabaidulin June 10 2010, 11:27:37 UTC
Но ведь были такие попытки(объектные стораджа, например, cache db)? Да и Завалишин чего-то подобное делает в своем Фантоме.

Но не пошло. Как вы думаете, почему?

Reply

Re: Отличный пост. rainman_rocks June 10 2010, 11:34:52 UTC
Чтобы технология пошла в массы, нужно одно из двух условий: аццкий маркетинг или гики-фанаты. У InterSystems Caché первое в ограниченном объёме есть, а второго нет из-за платности. У ZODB первого было ещё меньше, а второго нет из-за общей громоздкости и унылости.

Короче, громких/открытых проектов хорошего уровня доработанности не было. Сейчас вот вокруг HBase есть какая-то движуха. Это интересно, за этим можно последить.

А про Duke Zavalishin Forever лучше тактично промолчать. Фантом он и есть фантом, игра воображения.

Reply

Re: Отличный пост. avnik June 10 2010, 11:38:54 UTC
У вас какое-то устаревшее видение зопы (в частности без учета модных веяний типа repoze)

Reply

Re: Отличный пост. rainman_rocks June 10 2010, 11:48:12 UTC
Не спорю.

В зопе очень много всего накручено (я её застал в тот момент, когда она переходила с одного движка шаблонов на другой). Кроме того, там слишком много XML. Кроме того, там не было прямого доступа к коду в файловой системе, а веб-интерфейс - не лучший текстовый редактор.

Меня это всё как-то оттолкнуло, знаете ли. Особенно по контрасту с Django.

Reply


vitus_wagner June 10 2010, 11:28:36 UTC
Это из серии "я хочу чтобы у меня все было, и мне за это ничего не было". А так не бывает. SQL хорош тем, что под ним лежит хорошая математика - реляционная алгебра. Эта математика накладывает на возможности представления довольно большие ограничения. Но эти ограничения являются платой за возможность эффективно оптимизировать запросы.

К сожалению, большинство разработчиков, хватающихся сейчас за NoSQL никогда в жизни не слышали слова CODASYL. Поэтому не знают, что история баз данных начиналась с объектно-ориентированных БД, где не было никаких ограничений. Но и искать было крайне затруднительно.

Reply

zhengxi June 10 2010, 14:14:07 UTC
> Но эти ограничения являются платой за возможность эффективно оптимизировать запросы.

Вот взять тот же пример с постами и коментами.
Там ровно наоборот получается - для реаляционного решения нужен индекс по всем коментам, поиск по которому не будет лучше логарифмического (а комментов много, так много, что они и на один сервер могут не поместиться).
При этом post_id используется только для связи поста и коммента.
Есть RDBMS которые это "поймут" и эффективно соптимизируют до O(1), до (неявного, скрытого от автора SQL-запросов) хранения указателей на комменты рядом с постом ?

> К сожалению, большинство разработчиков, хватающихся сейчас за NoSQL никогда в жизни не слышали слова

Еще есть слово IMS, IMS is reportedly IBM's highest revenue software product, and it continues to grow.
Вполне такой NoSQL.

Reply

legolegs June 10 2010, 16:28:40 UTC
>Там ровно наоборот получается - для реаляционного решения нужен индекс по всем коментам, поиск по которому не будет лучше логарифмического (а комментов много, так много, что они и на один сервер могут не поместиться).

Однажды встаёт необходимость в чём-то вроде списка комментов одного юзера - иноэскуэльщикам остаётся сказать "%ляяяяяяяя.....".

Reply

rainman_rocks June 10 2010, 16:37:42 UTC
Вы слыхали фразу Д. Кнута о предварительной оптимизации?

А фразу О. Бендера касательно битья и плача?

Для реляционных БД такая внезапная "необходимость" обернётся точно таким же create index, который точно так же займёт N часов-дней-недель.

Поймите, в РСУБД никакой сверхъестественной магии нет. Там все те же структуры данных и алгоритмы. Вы их точно так же можете воспроизвести и при помощи NoSQL.

Reply


metaclass June 10 2010, 11:34:46 UTC
Я не понимаю, почему в SQL до сих пор нет типа поля результата "список"?
Т.е. делая запрос к таблице, мы одно из полей делаем подзапросом, выбирающим список из связанной таблицы и так его и возвращаем. Конечно, придется массово переделывать API, придумывать, как это все дело отобразить(и вставлять тоже) но "выбрать объект и его подчиненные объекты одним запросом" было бы весьма удобно.

Reply

plumqqz June 10 2010, 11:35:43 UTC
Ну как нет. Есть. Оракловые курсоры. В постгресе мне пришлось эмулировать.

Reply

metaclass June 10 2010, 11:38:45 UTC
Что-то они больше нигде мне не попадались.

Reply

plumqqz June 10 2010, 11:39:21 UTC
Ну, в ответ могу только развести руками.

Reply


Leave a comment

Up