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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.