nosql (программистское)
Jun. 3rd, 2011 11:30 pm(эта запись может быть интересна интернет-разработчикам и сочувствующим)
plakhov задается вопросом, почему вдруг расцвело так много систем NoSQL.
Частично это следствие изобретательного названия, т.е. взяли все, что не SQL и назвали NoSQL. Но все равно, даже учитывая это, действительно много разных систем стали популярными в последние несколько лет. Скажем, в начале 2000-х ничего такого не было.
Мне кажется, это объясняется сочетанием трех факторов. В порядке от менее к более важным:
1. Мода.
2. Та же причина, по которой собака лижет свои яйца. Написать какую-нибудь интересную псевдо-базу данных сейчас намного легче, чем скажем 15 лет назад. Компьютеры стали намного быстрее. Диски сильно быстрее не стали, зато памяти намного больше, и кэшировать данные в ней намного легче. То, что 15 лет назад нужно было писать на C, тщательно вымеривая размеры кэша, использование памяти, итд., сегодня - если речь не идет о миллионах клиентов - можно хоть на Питоне наваять. Хотя ваяют все же не на Питоне главным образом.
3. Удобство использования. Опенсорсная библиотека или база данных - а мы говорим именно об опенсорсе - живет постольку, поскольку может опереться на массу пользователей, на mindshare (бывают исключения, но они редки). 10 лет назад в веб-проектах любого рода пользоваться чем-то кроме MySQL или PostgreSQL было весьма затруднительно, потому что хостеры просто их не предоставляли. Помните таких людей, хостеров? Которые ставили сайты на одну и ту же машину, без виртуализации, и разрещали устанавливать на сервере только пакеты из заранее утвержденного списка? Которые соревновались друг с другом тем, какие версии PHP и Perl у них на серверах доступны, и из какой директории можно запускать CGI-скрипты?
В такой ситуации никакую MongoDB не установишь. А колокация своих собственных физических серверов стоила тогда больших денег. Понятно, что компании среднего и выше размеров это могли себе позволить и позволяли. Но вопрос-то в том, кто эту систему NoSQL будет пробовать на своих небольших проектах, кто доверит ей свой стартап из одного человека, кто будет писать о ней в блогах и на форумах. У всех этих людей не было выхода тогда: LAMP и гуляй смело. Хочешь что-то другое? Покупай свои сервера, плати кучу денег за их подключение к сети.
Поэтому главное, что привело к сегодняшней моде на NoSQL-системы в "публичном пространстве" - это, по-моему, развитие виртуализации, виртуализированного хостинга как следствия этого, а также падения цен на хостинг вообще. Сегодня каждый сам себе сисадмин благодаря Linode, Amazon EC2 и десяткам других подобных сервисов (а также сотням из "длинного хвоста"). Вне "публичного пространства" - например, внутри больших компаний, внутри Амазона, Майкрософта, Гугла - таких систем и раньше было много, подозреваю.
Частично это следствие изобретательного названия, т.е. взяли все, что не SQL и назвали NoSQL. Но все равно, даже учитывая это, действительно много разных систем стали популярными в последние несколько лет. Скажем, в начале 2000-х ничего такого не было.
Мне кажется, это объясняется сочетанием трех факторов. В порядке от менее к более важным:
1. Мода.
2. Та же причина, по которой собака лижет свои яйца. Написать какую-нибудь интересную псевдо-базу данных сейчас намного легче, чем скажем 15 лет назад. Компьютеры стали намного быстрее. Диски сильно быстрее не стали, зато памяти намного больше, и кэшировать данные в ней намного легче. То, что 15 лет назад нужно было писать на C, тщательно вымеривая размеры кэша, использование памяти, итд., сегодня - если речь не идет о миллионах клиентов - можно хоть на Питоне наваять. Хотя ваяют все же не на Питоне главным образом.
3. Удобство использования. Опенсорсная библиотека или база данных - а мы говорим именно об опенсорсе - живет постольку, поскольку может опереться на массу пользователей, на mindshare (бывают исключения, но они редки). 10 лет назад в веб-проектах любого рода пользоваться чем-то кроме MySQL или PostgreSQL было весьма затруднительно, потому что хостеры просто их не предоставляли. Помните таких людей, хостеров? Которые ставили сайты на одну и ту же машину, без виртуализации, и разрещали устанавливать на сервере только пакеты из заранее утвержденного списка? Которые соревновались друг с другом тем, какие версии PHP и Perl у них на серверах доступны, и из какой директории можно запускать CGI-скрипты?
В такой ситуации никакую MongoDB не установишь. А колокация своих собственных физических серверов стоила тогда больших денег. Понятно, что компании среднего и выше размеров это могли себе позволить и позволяли. Но вопрос-то в том, кто эту систему NoSQL будет пробовать на своих небольших проектах, кто доверит ей свой стартап из одного человека, кто будет писать о ней в блогах и на форумах. У всех этих людей не было выхода тогда: LAMP и гуляй смело. Хочешь что-то другое? Покупай свои сервера, плати кучу денег за их подключение к сети.
Поэтому главное, что привело к сегодняшней моде на NoSQL-системы в "публичном пространстве" - это, по-моему, развитие виртуализации, виртуализированного хостинга как следствия этого, а также падения цен на хостинг вообще. Сегодня каждый сам себе сисадмин благодаря Linode, Amazon EC2 и десяткам других подобных сервисов (а также сотням из "длинного хвоста"). Вне "публичного пространства" - например, внутри больших компаний, внутри Амазона, Майкрософта, Гугла - таких систем и раньше было много, подозреваю.
no subject
Date: 2011-06-03 08:48 pm (UTC)side node насчет MongoDB -- она принципипльно ни с какой архитектурой кроме x86 не совместима, и никто не смог убедить авторов, что они не правы.
no subject
Date: 2011-06-03 08:48 pm (UTC)no subject
Date: 2011-06-03 08:58 pm (UTC)no subject
Date: 2011-06-03 09:00 pm (UTC)no subject
Date: 2011-06-03 09:11 pm (UTC)no subject
Date: 2011-06-03 09:41 pm (UTC)no subject
Date: 2011-06-03 09:41 pm (UTC)Даже я порой ловлю себя на мысли о том, как классно было бы написать простенький NoSQL на Node.js, ведь он там ну так же ж просится. Чисто эмоциональный порыв. Останавливает только то, что я не один: на Node.js уже нафигачили с десяток NoSQL'ей, один другого хуже. :-)
no subject
Date: 2011-06-03 09:52 pm (UTC)хостинг - это не набор программ, а набор услуг. Облака, амазон, и пр. ничего не изменят. Захотят покупатели MongoDB - значит в CPanel добавят mongoDB.
сильное распространение mysql было связано с распространением php, на нем писали простые сайты и магазины. Коммерческий хостинг MS SQL сильно припозднился с выходом на рынок, он был сложен в настройке и дорог. Часто использовали ASP+MDB. mysql было просто настраивать, поддерживать, и продавать.
no subject
Date: 2011-06-03 10:04 pm (UTC)Собственно эту моду задал гугловский Bigtable/GFS, выйдя на рынок с миллисекундным поиском. А до него пользовались "серьёзными" базами данных на мощных машинах. Не знаю насчёт M$, а в IBM, по слухам, до сих пор мэйнфреймы крутят и едут домой, когда те падают.
Последние полтора года наша команда из 11 человек занимается тем, что мигрирует один проект с SQL на NoSQL, так что можно сказать, мы собаку на этом съели.
no subject
Date: 2011-06-03 10:35 pm (UTC)no subject
Date: 2011-06-03 11:30 pm (UTC)no subject
Date: 2011-06-04 12:11 am (UTC)no subject
Date: 2011-06-04 12:28 am (UTC)Я думаю, что популярность в последнее время связана с "web 2.0". Есть такая шутка, что если за программистом хорошо не следить, то он вместо своей задачи обязательно напишет или новую ОС, или новый язык программирования. Но базы обычно не писали, потому что в проект их было не пропихнуть - к данным все относились с трепетом - разрешить вставить какой-нибудь уникальный скриптовый язык - это пожалуйста, но база должна быть настоящей.
Так вот в Web 2.0 обычно на данные всем плевать. Ну пропало сто комментов, тыща чекинов и все фоточки с котятами за день. Ну и ладно, в крайнем случае пост в блоге с извинениями.
no subject
Date: 2011-06-04 12:35 am (UTC)http://www.codesynthesis.com/~boris/blog/2011/04/06/performance-odb-cxx-orm-vs-cs-orm/
no subject
Date: 2011-06-04 02:55 am (UTC)no subject
Date: 2011-06-04 03:36 am (UTC)о, да.
no subject
Date: 2011-06-04 05:13 am (UTC)no subject
Date: 2011-06-04 06:09 am (UTC)no subject
Date: 2011-06-04 07:54 am (UTC)Ась? То есть как - нет масштабируемости и отказоустойчивости?
Это смешно сейчас было, да.
no subject
Date: 2011-06-04 08:29 am (UTC)А уж сколько проектов сделано на сохранении данных в миллионах маленьких файликов и не сосчитать.
no subject
Date: 2011-06-04 09:36 am (UTC)Отказаустойчивость в смысле гарантии сохранности подвержденных транзкций достигается вообще большой кровью, начиная с того, что нужно использовать кластер, RAID и т.д. И при это автоматичекий failover часто все равно не случается, потому что клиент криво написан или нагрузка от повторных запросов слишком высокая. И это у MsSQL и Oracle, настроить что бы это все заработало на MySQL вообще мало кому удается (и узнают об этом слишком поздно).
Не случайно серьезные люди отдельно от базы данных хранят журнал изменений, что бы потом можно было заново накатить (казалось бы, почему сразу так не написано, что бы этим не нужно было заниматься?). Например, вот: Database failure at JBMorgan Chase: corruption replicated to hot spare, restored from buckup, 874K transactions were reapplied.
http://www.dbms2.com/2010/09/17/jp-morgan-chase-oracle-database-outage/
no subject
Date: 2011-06-04 09:47 am (UTC)Это вообще не масштабируемость.
...или разнесением write/read нагрузок, или полным дублированием. Вариантов-то есть.
Но она есть.
Это уже не проблемы SQL как подхода, правда же? Собственно, все вышеописанное - тоже.
Омг. Это стандартная политика бэкапа для БД, что вас удивляет? Делать каждые 5 минут бэкап базы - невыносимо дорого, поэтому бэкапят базы (редко), диффы баз (чаще) и логи транзакций (часто). И в таком порядке и накатывают при сбое - сначала последний полный бэкап, потом дифы, потом логи, получая тем самым консистентную базу на последний возможный момент. Это не "серьезные люди", это любой нормальный DBA.
А у моргана проблема случилась в том, что оракл реплицировал ошибочные данные в hot spare, поэтому и фейловер умер. Это в любой системе может случится, и потребует восстановления из бэкапа. Аналогия: никакой массив не поможет от вируса, который гуляет и удаляет файлы, массив эти изменения будет честно реплицировать; чтобы восстановить данные, нужен бэкап.
Собственно, это лишний раз нам показывает, что hot spare помогает от аппаратно-программных сбоев, но не от потери данных.
no subject
Date: 2011-06-04 10:27 am (UTC)"что вас удивляет?" В основном цена вопроса :)
Собстванно говоря, другими словами, Cassandra и други NoSQL пытаются решить сценарии, которые хотя и возможны, но слишком дороги в SQL, и пользуются ими не потому, что модно, а потому что на SQL дороже получается.
no subject
Date: 2011-06-04 10:29 am (UTC)no subject
Date: 2011-06-04 10:38 am (UTC)Вообще, в MS SQL (не знаю ничего про Oracle в этом вопросе) сама СУБД пишет транзакции в "отдельный от БД лог".
Live backup - не бывает. Это не бэкап, это реплика.
Вот только эти сценарии в первую очередь связаны не с масштабируемостью и уж тем более не с надежностью, а с самой методологией хранения и запросов при high performance solution. Все зависит банально от того, как именно нам надо работать с данными и что именно нам надо оттуда получать и с какими условиями.
no subject
Date: 2011-06-04 11:27 am (UTC)Но когда ООП стала потихоньку вытеснять старое, структурное программирование, возникла неприятность: объектная иерархия плохо мэппится в реляционную схему. В итоге появился костыль в виде ORM, который хотя и решал некоторые проблемы, но взамен создавал кучу новых. Каждый, кто всерьёз работал с Hibernate/NHibernate и т.п., хорошо это на своей шкуре прочувствовал. Поэтому, конечно, желание избавиться от ORM и породило определённое движение.
Лично я думаю, что за Scala и MongoDB будущее, но оно наступит ещё не скоро) Слишком велика инертность индустрии, зависящей от кадров, накопленного опыта и т.д.
no subject
Date: 2011-06-04 11:58 am (UTC)no subject
Date: 2011-06-04 12:23 pm (UTC)no subject
Date: 2011-06-04 06:54 pm (UTC)no subject
Date: 2011-06-04 07:18 pm (UTC)Если вы не читали, рекомендую ознакомиться со статьями Майкла Стоунбрейкера на эту тему, он весьма интересно пишет. :) Например, http://cacm.acm.org/blogs/blog-cacm/50678-the-nosql-discussion-has-nothing-to-do-with-sql/fulltext (перевод этой и ещё некоторых любопытных статей по теме можно найти на http://citforum.ru/database/articles/index.shtml).
no subject
Date: 2011-06-04 07:41 pm (UTC)no subject
Date: 2011-06-04 07:49 pm (UTC)Two factors
Date: 2011-06-05 09:32 am (UTC)Представьте, что вы решили для охраны своего дома использовать собачку. Ротвейлеру, однако, надо кушать, его надо выводить "гулять", дрессировать, поскольку собаки сами по себе человека рвать не будут, нужна специальная выучка.
Еще хуже, если вы наняли охранное ведомство. Им надо платить много денег, оправдываться если вы забыли отключить сигнализацию и они прибыли "по ложному вызову". А что если "охранники" окажутся теми же грабителями, только на помесячной плате, и станут выдавливать из вас "за крышевание" и "ставить на счётчик"?
Те, кто занимается компьютерами очень часто забывают, что нигде нет "чистых технологий", и за ними всегда маячит "бизнес".
Я достаточно стар, чтобы помнить, какие поразительные заявления делала индустрия SQL о могуществе подхода ("таким образом все отношения мира можно выразить через операции реляционной алгебры" - я не преувеличиваю! Такая фраза у одного из "отцов" подхода впервые навела меня на мысль, что меня жулят)
Базы данных, выполняя необходимую функцию, одновременно превратились в монстра, который жрёт гораздо больше, чем приносит пользы. Коммерческие БД требуют сотен мегабайт только для установки, особо мощного hardware, специальных людей с мега-зарплатами для обслуживания.
При этом они дублируют операционную систему и раздаются без меры, становясь всё большей и большей bloatware. Одновременно выдумывая всё более спекулятивные способы взыскивать деньги и делать клиента беззащитными от них ("потеря" при переходе на другую систему, трудность или невозможность переносить данные и т.д.)
Поэтому уже два десятка лет видна тенденция не "виртуализации", а ИЗБАВЛЕНИЯ ОТ ЖАДНОГО УРОДА-СПЕКУЛЯНТА-МОШЕННИКА.
Сначала эту роль выполняли "народные" и маленькие/простые БД, вроде mSQL, MySQL и т.д. Последняя сама подросла и стала похожа на старших братьев, потому для массы народа - и в веб-проектах, и во внутрикомпанейских разработках, и для иных программ - всегда стоит вопрос "маленькой, быстрой и ДОСТАТОЧНО сильной базы". Зачем покупать за тысячи абсолютного чемпиона по подъёму тяжестей, если мне надо перенести доски до двора дачи, сколотить новый забор.
ВТОРОЕ
Термин NoSQL обманчив, т.к. this is an "umbrella term" означающий "всё остальное кроме Х".
Помимо уже упомянутых подгрупп втоде BerkeleyDB - TokyoCabinet (последний тоже уже маленько разросся), есть одно направление, которое если не перечеркивает, то сильно теснит Relational Databases ПО ЭФФЕКТИВНОСТИ.
Если выкинуть из головы вдолбленные годами штампы и посмотреть на то, к чему оптимизированы Relational Databases, то мы обнаружим, что они оптимальны:
(а) для добавления информации (writing)
(b) считывания полной строки из таблицы
Они очень плохо считывают частичную информацию.
Таким образом ПРАВИЛЬНАЯ оптимизация relational db заключается не в "нормализации таблиц", но в подгонке таблиц к форматам стандартных запросов так, что бы отдавались все колонки найденной строки.
Column-basedё DB's могут выполнять сложные запросы НА ПОРЯДОК быстрее, беря при том меньше памяти. Например, один из стандартных тестов с MySQL просто не смог выполниться в 1Гб памяти, тогда как a column-based db сделала его легко и очень быстро.
Поэтому еще один импульс для развития "NoSQL" технологий - попытка сделать те операции, которые стандартная модель делает очень плохо (выборка отдельных столбцов) или вообще сделать не может (так, в кучу NoSQL часто мешают разного рода системы, позволяющие выполнять map-reduce операции)
ИТАК, движет при создании NoSQL: (а) желание иметь простые и "достаточно" сильные системы вместо монстров, которые на 90% занимаются самопожиранием ресурсов и (б) попытки создать новые технологии, невозможные в Relational model или оптимизирующие её как не являющуюся лучшей всегда и везде.
no subject
Date: 2011-06-07 09:47 pm (UTC)$500 per day
Date: 2017-06-30 12:37 pm (UTC)Hot sale! E-gift card amazon with a face value of $ 2000 for only $ 500.
Date: 2017-07-22 04:31 am (UTC)https://amazonegiftcardcheap.wordpress.com
The promotion will last until July 31, 2017. After July 31, the price will be $ 1000
https://amazonegiftcardcheap.wordpress.com
lista casino online italiani casino online ver casino 10 euros gratis sin deposito
Date: 2017-08-26 11:56 pm (UTC)http://carnagetdm.com/forum/viewtopic.php?f=20&t=42277
http://imdbcommunity.com/community/viewtopic.php?f=20&t=270087
http://paniqo.org/viewtopic.php?f=88&t=85128
http://www.zdorovie-ok.ru/forum/viewtopic.php?f=23&t=6344
http://giantcapital.co/forum/viewtopic.php?f=7&t=93762
http://forum.menunedeli.ru/viewtopic.php?f=31&t=38368
http://tailexpert.neware.nl/support/viewtopic.php?f=6&t=7944
http://hookah-zone.com/forums/index.php?topic=393287.new#new
http://thelasthope.ru/index.php/forum/12-%D0%9D%D0%B0%D1%88-%D0%BF%D0%BE%D1%80%D1%82%D0%B0%D0%BB/31787-%D0%A0%D1%94%D0%A0%C2%B0%D0%A0%C2%B7%D0%A0%D1%91%D0%A0%D0%85%D0%A0%D1%95-%D0%A0%D1%95%D0%A0%D0%85%D0%A0%C2%BB%D0%A0%C2%B0%D0%A0%E2%84%96%D0%A0%D0%85-%D0%A0%C2%B0%D0%A0%D2%91%D0%A0%D1%98%D0%A0%D1%91%D0%A1%D0%82%D0%A0%C2%B0%D0%A0%C2%BB-start-online-casino-website-create-online-casino-website#31787
http://hdmi.guru/posting.php?mode=post&f=38
http://help.dominanta.vpoloni.com/viewtopic.php?f=2&t=39353
http://www.power-roleplay.com/forum/index.php?topic=251628.new#new
http://anarkys.com/forum/viewtopic.php?f=12&t=149617
http://www.travel.ipt.pw/News/bharatpur-bird-sanctuary/