LINUX.ORG.RU

«понимание NoSQL»

 ,


3

2

Опыт работы с современными RDBS (Relational Database Systems) и NoSQL базами данных, понимание различий между ними.

Что они конкретно хотят услышать? Там основное различие в том, что в NoSQL лучше ищется по ключам и труднее джойнится. Но у меня опыта работы с NoSQL нет, вот и непонятно, что они имеют в виду...

Расскажите, у кого опыт есть - какие основные принципы и поинты надо знать?

NoSQL БД все разные. Тут различий между разными NoSQL море, а между реляционными и NoSQL еще больше.

Поиграйся с MongoDB и CouchDB. Монга вроде как самая популярная, в принципе ее одной даже достаточно.

NoSQL лучше ищется по ключам и труднее джойнится

В CouchDB нормально джоинить можно. Сложности будут, если нужно сджоинить больше 2-ух документов.

Black_Roland ★★★★ ()

Если учесть, что основная масса веб-разработчиков использует SQL БД как NoSQL, то там основное различие в том, что в NoSQL лучше ищется по ключам и труднее джойнится.

anonymous ()

Явные отличия:

  • Типизация (в sql она есть и строгая, в nosql/документо-ориентированных часто ее нет)
  • Объемы данных (в sql лимиты обычно на таблицу/tablespace, в nosql на документ/значение)
  • Блокировки (в sql блокировка может быть на всю таблицу или строку, в nosql всегда на пару ключ-значение/документ)
  • SQL БД это обертка над NoSQL в каком-то смысле (mysql раньше до версии 5.0/5.1 строилась на Berkeley DB, универсальной БД, NoSQL в своем роде).

Стоит различать сами NoSQL: key-value (bdb, leveldb, redis, etc) и документо-ориентированные (mongodb, couchdb) и многие-многие другие.

Из всех различий стоит выделить подход к программированию. Скорей всего тебе надо знать что такое ORM и почему для документо-ориентированных NoSQL БД он фактически не нужен.

gh0stwizard ★★★★★ ()

NoSQL - понятие растяжимое. Но вот тебе про монгу на примере:

Пусть у нас будут предприятия с именем, адресами(один из них основной).

Sql:

Create table organization(
Id INT PRIMARY KEY
Name VARCHAR UNIQUE);

create table street(
id INT PRIMARY KEY
street VARCHAR);

create table building(
Id INT PRIMARY KEY
number VARCHAR
street_fk INT FOREIGN KEY REFERENCE street);

create table organization_address(
organization_fk INT FOREIGN KEY REFERENCES organization,
building_fk INT FOREIGN KEY REFERENCES building,
Main BIT);

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

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

{Name:"рога и копыта",
Addresses:[{street:"Ленина", building:"7б", main:true, note:"вход с восточного крыла"},{street:"Пролетарская", building:"7"}]}

Соответственно гибкость, селектить быстро и ловко можно. Но вот мэр усть-пердюйска сменит название ул. Пролетарской на ул. Кадырова. И все, ты прилип: придётся все упоминания о улице править.

В общем, как-то так. Ну ещё есть ACID, которого в монге нет. А есть Всякие кластеризации и шардинги. Но основная разница именно в этом.

RedPossum ★★★★★ ()

На собеседование сходи и спроси у них, что они под этим понимают, если ты не понимаешь.

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

При чем тут дотнет?

В дотнете всё просто - есть нормальные базы и есть классические структуры данных (ну и там библиотеки для парсинга xml/json).

А тут хотят знание конкретных продуктов (написали же в начале треда - MongoDB и CouchDB и никак по-другому), которые к .Net-у никакого отношения не имеют...

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

В итоге, как я понял, NoSQL БД - это один из нескольких весьма конкретных продуктов:

http://stackoverflow.com/questions/1777103/what-nosql-solutions-are-out-there...

никаких общих стандартов/подходов/принципов нет... Обучающих курсов по NoSQL вообще - тоже (а вот по SQL - выше крыши).

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

Indaril_Shpritz ()

Каких только глупостей в вакансиях не пишут, не принимай близко к сердцу. Думаю лучше читать как: «есть опыт промышленного использования SQL СУБД и какой-нибудь из NoSQL».

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

Ты всё неправильно понял.

никаких общих стандартов/подходов/принципов нет

Подходы общине как раз-таки есть. Например rethinkdb и mongodb работают с сущностями в виде JSON документов. Ну и т.д. в принципе их легко можно поделить на конкретные концепции.

Обучающих курсов по NoSQL вообще - тоже

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

теперь вы должны уметь работать таким образом

Никто никому ничего не должен. СУБД нужно выбирать из прагматичных целей. Если хочется наваять быстро первый релиз своего веб проекта, то NoSQL может сильно ускорить процесс. Потом когда надо можно мигрировать на SQL СУБД.

Hater ★★ ()
Последнее исправление: Hater (всего исправлений: 1)
Ответ на: комментарий от Indaril_Shpritz

При устройстве на работу обычно можно не подходить по 50% навыков, т.к. тяжело найти сферического кандидата в вакууме.

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

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

не может. SQL-ные инструменты знаешь с детства и на знакомых программах будет по-любому быстрее, чем на незнакомых (которые ещё надо учить).

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

если ты студент.

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

А если ты дядька под сорок - то уже так не выйдет.

Если дядька в 40 продолжает кодить, то с ним что-то не так.

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

SQL-ные инструменты знаешь с детства и на знакомых программах будет по-любому быстрее, чем на незнакомых (которые ещё надо учить).

Главная фишка новомодных NoSQL СУБД - у них очень низкий порог вхождения. Можно начинать использовать их практически сразу, в отличие от.

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

P.S. Или в смысле «не пересекаются»? Тогда согласен

всмысле что смысл слова «ортогональность» не имеет отношения к базам данных, как собсно и «параллельность»

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

Если дядька в 40 продолжает кодить, то с ним что-то не так.

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

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

инженеров после 30 надо расстреливать (ц) не помню откуда, но я согласен

ну, разве что не расстреливать, а переводить на должности по просиживанию штанов, иначе понакодют в свои 40 лет, что им морду набить хочется

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

Кстати, это очень интересный вопрос для разговора. Честно говоря, я и сам не знаю кем буду после 40 (если доживу).

Проблема в том, что с возрастом люди теряют способность к быстрому обучению. Мир ИТ очень динамичен и сейчас технологии мгновенно входят в моду и выходят из неё.

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

Кстати вот через меня не один десяток резюме прошёл (по java и js, если это существенно). Старше 40 никто не встретился.

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

Мир ИТ очень динамичен и сейчас технологии мгновенно входят в моду и выходят из неё.

Это самое большое заблуждение про IT. Ничего тут не входит и не выходит. Си как был, так и есть, плюсы были и есть, ява была, есть и будет есть. Таких ниш 100500, они были, есть и будут еще много-много лет.

Это просто яваскрипты и пхп обновляются раз в месяц, потому что ни на что другое в принципе не способны и школоло-обезьянки-за-еду осваивают все новые диалекты говноскриптиков. Отсюда и «динамика».

На самом же деле IT - окаменелое говно мамонта. Посмотри вон, как Д или Раст мгновенно меняют инфраструктуру...

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

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

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

Это самое большое заблуждение про IT. Ничего тут не входит и не выходит.

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

Си как был, так и есть, плюсы были и есть, ява была, есть и будет есть.

Слишком обобщённое высказывание. Java имеет уйму сфер применения и кучу фреймворков, либин, апп серверов и контейнеров. Они так же входят в моду и выходят из неё. Немногие сейчас помнят например про Struts и предпочитают более современные фреймворки.

потому что ни на что другое в принципе не способны

Какой-то нелепый поток сознания.

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

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

На веб всем класть - это для школьников. В нем одни школьники да умишком слабенькие работают. А рынок мобильных приложений это говноскриптики, про которые я уже написал. Если же ты имеешь в виду сами смартфоны и их инфраструктуру, то это не мир IT меняется (внутри все тоже), а решения топ менеджеров гигантов индустрии, таких как микрософт, апл, самсунг. Например, раньше все думали, что сам телефон надо пилить, сейчас главная идея - инфраструктура вокруг телефона. Тоесть карты, сторы, месенджеры итп и у каждого, как видишь, она своя (lumia, iphone, samsung).

Java имеет уйму сфер применения и кучу фреймворков, либин, апп серверов и контейнеров.

Ага, один фреймворк для клепания окошек детьми сменили на другой, кулстори. Щас вон spring в моде, и че?

Какой-то нелепый поток сознания.

Да, мысли шире, может поймешь о чем я.

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

В нем одни школьники да умишком слабенькие работают.

Google и иже с ними смотрят на тебя с недоумением. Львиная доля разработки идёт для веба, так что не надо на него класть.

Ага, один фреймворк для клепания окошек детьми сменили на другой, кулстори. Щас вон spring в моде, и че?

Ну, и надо изучать этот новый фреймворк, да.

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

Если дядька в 40 продолжает кодить, то с ним что-то не так.

Дяди бывают разные. Видел 70 летнего сишнека, сразу вошел в дело, патчи в первый же день были.

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

Google и иже с ними смотрят на тебя с недоумением. Львиная доля разработки идёт для веба, так что не надо на него класть.

Там алгоритмы и бэкэнды, это немного другое, не скриптовэб это. А так да, в гугле тоже есть дети индусы, пилящие кофескрипт на жноде или как их там.

Ну, и надо изучать этот новый фреймворк, да.

Раз в 10 лет они меняются. Да и кому надо? Тот, кто перешел с предыдущепопулярного фреймворка, им не надо ничего изучать. Потыкать 5 минут и хватит. Ну или детям надо, которые первую работу ищут. Чтобы на собеседовании сказать, что знают, а на самом деле и те ничего не изучают, для них ничего не меняется :D

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

десяток резюме прошёл

Вот у меня знакомый как-то сказал хорошую фразу: «устраиваются только пид*расы всякие, а норм программистов зовут»

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

Из Международного Реестра Норм Программистов зовут?

ну да, это же очевидно

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

Вы еще не реализовали импорт справочника ОКНП в своей системе?!

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

Если дядька в 40 продолжает кодить, то с ним что-то не так.

А чем должен заниматься дядька в 40, чтобы с ним все было так?

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

Полёживать на пляже на Гавайях и сосать мартини через трубочку.

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

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

Еще один миф. Не теряют, а просто не хотят, становятся овощами.

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