LINUX.ORG.RU
ФорумTalks

А вы все NoSQL да NoSQL

 , ,


0

1

Не, ну что в нем вот такого вот, чего нет в том же PostgreSQL (особенно с припаянным к нему hstore)? Что в этих монгах-бонгах есть такого, чего через SQL выразить принципиально нельзя? Иногда такое впечатление, что авторы и евангелисты всех этих безSQLьных баз просто не осилили SQL в свое время и не понимают толком, зачем он нужен. Хинт: хваленое object persistence — это капля в море среди всего, для чего РСУБД можно использовать, нужно использовать и таки используют.

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

Или я неправ? ;)

★★★★★

Последнее исправление: shimon (всего исправлений: 1)

Upd не, ну я понимаю там, допустим, для сверхбыстрых очередей сообщений всякое kyotocabinet и прочий ключ-значение типа redis как нельзя лучше справляется, но такая очередь хранилищем данных может считаться весьма условно.

shimon ★★★★★
() автор топика

Или я неправ? ;)

Концепция SQL убога по своей сути - на хранилище данных с декларативным языком возлагается имериативная задача обработки данных, отчего возникает такое убожество как PL\SQL.

belous_k_a
()

Запрещаем join, весь код СУБД затачиваем на то, что таблицы абсолютно независимы от друг друга - профит.

Обзываем какой-то ID ппц каким главным, затачиваем весь код на быстрые операции по этому ID - профит.

Запрещаем идиотам нормализировать что-попало чтобы было няшно - профит.

Под профитом следует понимать хорошие циферки на бенчмарках.

vertexua ★★★★★
()
Ответ на: комментарий от shimon

Скажу банальность: есть люди, которые освоив молоток в любой проблеме видят гвозди...

Применительно к: есть люди, которые освоив noSQL, применяют к месту и не к месту эту технологию. Хотя идеальным было бы сочетание SQL и noSQL технологий (в зависимости от требований к перфомансу). Начинать надо с SQL, а затем, по ходу стресс-тестирований, отдавать часть нереляционных функций по манипуляциям с данными в noSQL-системы.

Slavaz ★★★★★
()
Ответ на: комментарий от shimon

Лучше когда молотком забивают гвозди, а не припаивают SMD диоды.

belous_k_a
()
Ответ на: комментарий от Slavaz

Следует добавить, в NoSQL, которые в большинстве своем специализированы. И именно это можно использовать во благо

vertexua ★★★★★
()

Так ведь, чтобы разработать более-менее сложную SQL базу, надо долго учиться, реляционную алгебру знать всякую, когда чего нормализовать, а когда лучше не надо…

То ли дело была Клара Клипперовна Фокс, упокой, господь, её память. Любой школьник без царя в голове писал АРМы и шел АСУчивать предприятия. :)

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

надо долго учиться

Для осознания простейших распределенных неблокирующих алгоритмов хватит букваря и трех классов богословского лицея?

belous_k_a
()
Ответ на: комментарий от vertexua

Ога. Собираем мы так данных по парусот (или вовсе) записей в секунду на протяжении года, а потом нам говорят: а сделайте-ка вы, посоны, нам отчетов таких, таких, эдаких и вот развоттаких еще! Вы сможете!

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

В NoSQL посоны сразу пошли за веревкой и мылом, потому что оказались в жёппе.

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

Посоны из NoSQL, которые не повесились из-за отчетов, на этот раз таки повесились, потому что полгода данных пошло коту в сраку.

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

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

Как заметил гражданин выше, то для данных, которые по своей природе реляционные нужно использовать соответствующий инструмент. Но если у вас есть счетчик лайков, но который всем пофиг, то лучше бы его расшардить на кучу инстансов, которые хоть и не консистентны, то в итоге будут. И потом обрабатывать >100500 запросов в секунду на каждом узле.

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

vertexua ★★★★★
()

Иногда такое впечатление, что авторы и евангелисты всех этих безSQLьных баз просто не осилили SQL в свое время и не понимают толком, зачем он нужен.

Так и есть. NoSQL-ями не пользовался, но осуждаю :)

Harald ★★★★★
()
Ответ на: комментарий от belous_k_a

Я прекрасно помню, как выли «разработчики всяких баз данных», когда на замену xBase массово приходили РСУБД: «убогая концепция», «язык запросов не нужен», «логика в базе?», «слишком много математики», «у нас декларативщина в таблицах, и голая императивщина в коде, а у вас каша», «зачем мне учить SQL, если Lotus 1-2-3 денег приносит?», «кому нужен этот ваш ACID?».

baka-kun ★★★★★
()

Ну вот например есть база данных — файловая система. SQL? Таки нет. Реляционная? Нет, таки иерархическая (или сетевая, если есть поддержка ссылок).

Предлагаешь выкинуть файловые системы и заменить на СУБД?

Xenius ★★★★★
()
Ответ на: комментарий от shimon

В nosql для этого применяют mapreduce. А это пишется и отлаживается даже проще и быстрее чем сложные sql-запросы. И, кстати, 200 записей в секунду это ничто, поэтому sql у тебя пока еще работает.

Reset ★★★★★
()
Ответ на: комментарий от Reset

И, кстати, 200 записей в секунду это ничто, поэтому sql у тебя пока еще работает.

Эт хегня, у нас на постгресе и десятки тысяч выходили даже на среднепотреблятском железе.

Насчет же mapreduce меня терзают сомнения: нахрена писать аггрегатные функции фактически самому, если в SQL они из коробки идут, for free?

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

Презентации в 99.99% случаев это вода и слова о красивых идеях, которые пока никак не реализованы. Ты лучшей дай ссылку на главу официальной документации.

Reset ★★★★★
()

ну сколько можно эту тему мусолить, воспользуйся поиском.

Краткое содержание предыдущих серий: key-value databases решают определённый класс задач, причём гораздо успешнее чем традиционные sql-базы. Вот для этих задач и надо использовать. Так же неожиданно для многих выяснилось что некоторые задачи совсем не требуют sql.

Есть ещё преимущество - простых sql-баз нет, проектирование их дело сложное, долгое и дорогое. А key-value хранилище любой ламер может сделать, причём заточенное под свои нужды.

true_admin ★★★★★
()
Ответ на: комментарий от Xenius

Предлагаешь выкинуть файловые системы и заменить на СУБД?

помню, одна инновационная ос собиралась использовать такую инновационную фс

Crocodille
()
Ответ на: комментарий от shimon

Эт хегня, у нас на постгресе и десятки тысяч выходили даже на среднепотреблятском железе.

В пике или постоянно? Какой объем месячных данных? Насколько сложны запросы для построения отчетов?

Насчет же mapreduce меня терзают сомнения: нахрена писать аггрегатные функции фактически самому, если в SQL они из коробки идут, for free?

Оберни их в библиотеку для твоего языка, если так сложно каждый раз набрать две строки кода. Кстати, в случае с mapreduce ты ничем не ограничен и можешь код писать на _любом_ языке (гуглить mapreduce streaming mode) и использовать какие угодно правила для агрегации, а не только то, что встроено в убогий sql.

Reset ★★★★★
()
Ответ на: комментарий от shimon

Hot Standby is the term used to describe the ability to connect to the server and run read-only queries while the server is in archive recovery or standby mode.

Ниасилил при чем тут горизонтальная масштабируемость. У меня 200 машин, я хочу на все читать и писать, а завтра у меня объем данных вырастет в 10 раз и я захочу безболезненно добавить еще 1800 машин, чтобы справиться с объемами.

Reset ★★★★★
()
Ответ на: комментарий от Reset

ну в топике речь именно о key-value («доставать умеренно быстро блобики по ключу»)

true_admin ★★★★★
()
Ответ на: комментарий от Reset

А потом у тебя вылетит по питанию стойка, и всю твою монгодб можно выбрасывать, потому что транзакционность принесена в жертву скорости.

leave ★★★★★
()
Ответ на: комментарий от leave

бэкапы рулят.

Кстати, секса с mysql и innodb мне тоже в жизни хватило (хотя не все тут согласятся называть mysql базой данных, но всё же).

Да и аппаратные глюки исключать нельзя, а так же поломку оборудования. И тут транзакции не помогут.

true_admin ★★★★★
()
Ответ на: комментарий от leave

А потом у тебя вылетит по питанию стойка, и всю твою монгодб можно выбрасывать

Ну да. Выбросить и подтянуть с соседней реплицированной ноды.

KRoN73 ★★★★★
()
Ответ на: комментарий от Reset

map reduce не панацея

мы посчитали, чтоб скорость нормальная была, нам надо бы ферму из 50 среверов только для отчетов

namezys ★★★★
()

Ну это примерно как если бы ты спросил, чем эти ваши RISC лучше CISC. Поцоны походу просто CISC не асилили ... ну и далее по тексту.

доставать умеренно быстро блобики по ключу

Ой, как ани там оказались, блобики-то? Какой идиот их туда напихал?

Suntechnic ★★★★★
()

Не, ну что в нем вот такого вот, чего нет в том же PostgreSQL

man Бритва Оккама

Dobriy_i_Prostoy
()

Хотя ты и тролль, но ты во всем прав.

tailgunner ★★★★★
()
Ответ на: комментарий от true_admin

проектирование БД дело сложное, долгое и дорогое. А key-value хранилище любой ламер может сделать, причём будет гордиться тем, что оно якобы заточенно под его нужды.

fixed

tailgunner ★★★★★
()

Через страдание носкулем надо пройти. Это как ветрянка.

baverman ★★★
()
Ответ на: комментарий от true_admin

секса с mysql и innodb

у меня этот секс сейчас. чем его бекапить без даунтайма, чтобы была возможность восстановить резервную копию за указаную дату конкретного списка баз, а не всех баз. есть такое? сейчас смотрю квадратными глазами на innobackupex, и вроде он не умеет конкретные базы доставать.

Komintern ★★★★★
()

вне «динамических оперденей на эрланге» жизни нет?

stevejobs ★★★★☆
()

Расскажу я вам историю про то, как у меня была туристическая система, в которой была база туров, которая крутилась замечательной на реляционной СУБД MySQL. Крутилась медленно и неуклюже.

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

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

К тому же в CoudbDB можно спокойно хранить файлы прямо в базе данных, в то время как в MySQL нужно извращаться с хранением блобов в базе, либо со связью объектов в базе данных с объектами файловой системы.

Тег: [история успеха]

Dobriy_i_Prostoy
()
Ответ на: комментарий от Dobriy_i_Prostoy

по сути есть две основные сущности — тур и отель. Но в реляционной базе
приходится городить целую кучу вспомогательных таблиц
CouchDB, где на каждый тур и на каждый отель приходится всего лишь по одному документу

use Hibernate (или какой-нибудь другой умный ORM). Будет по одному объекту «на каждый тур и на каждый отель». Работы - написать аж два бина. И ты все еще сможешь писать логику в базу, когда возникнут тормоза.

stevejobs ★★★★☆
()
Ответ на: комментарий от Dobriy_i_Prostoy

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

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

shimon ★★★★★
() автор топика
Ответ на: комментарий от Komintern

чтобы была возможность восстановить резервную копию за указаную дату конкретного списка баз, а не всех баз. есть такое?

mysqldump же, изкоробки есть

Harald ★★★★★
()
Ответ на: комментарий от leave

у всяких гуглов, яндексов, твитеров и прочих фейсбуков каждый день вылетают машины, стойки и даже датацентры и при этом всё живет без всяких sql

Reset ★★★★★
()

То, что в названии NoSQL присутствует SQL это абсолютно не делает ему никакого отношения к реляционной алгебре СУБД. Это просто другая форма хранения данных и доступа к ним. Откуда вообще эта тема холиваров двух принципиально различных инструмента с совершенно различными целями применения? Вестимо от незнаний ТСов.

Deleted
()
Ответ на: комментарий от Dobriy_i_Prostoy

в CoudbDB можно спокойно хранить файлы прямо в базе данных

Из батона чёрного хлеба можно сделать троллейбус, НО ЗАЧЕМ?!

Xellos ★★★★★
()
Ответ на: комментарий от Deleted

Что-то уже не первый человек говорит об «абсолютно другой области применения», но не может её назвать.

Xellos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.