NoSQLСейчас, когда говорят база данных, то подразумевают реляционные БД, я уверен, что редкий программист не слышал акроним SQL, именно этот язык запросов используется для работы с реляционной моделью данных и часто обыгрывается в названии СУБД, например: MySQL, PostgreSQL, MSSQL, SQLite и многие другие. Реляционная модель имеет много положительных сторон: целостность, не избыточность, предсказуемость. Но это в теории, на практике же часто приходится поступаться этими принципами в угоду производительности.

Кроме этого существуют серьезные проблемы с масштабированием реляционных БД, для этого используют различные репликации, но это скорее костыль чем решение. Именно поэтому, чаще всего узким местом веб-проектов являются базы данных. Современные высоконагруженные сайты, справляются с этой проблемой с помощью кэширования — связка memcached+mysql уже стала стандартом де факто. Вполне предсказуемо, что появились новые модели данных, которые проектировались с целью избавиться от проблем реляционной модели.

NoSQL - Not Only SQL NoSQL или постреляционные базы данных — это совсем новый термин объединяющий в себе нереляционные хранилища данных которые не подчиняются привычным правилам хранения данных, так называемому ACID. Обычно такие системы не имеют жесткой структуры и не используют пересечения таблиц, по большому счету у них вообще нет таблиц!

Следует знать, что акроним NoSQL расшифровывается как Not Only SQL — «Не только SQL», это движение не против SQL, а за то, чтобы использовать его только там, где это нужно. Нереляционные базы данных разделяют на несколько типов, в зависимости от их масштабируемости, модели данных и запросов, а также систем хранения данных. К единой классификации ещё не пришли, поэтому рассмотрим самые яркие модели данных:

Ключ/Значение

Это самая простая форма как для организации данных так и для реализаци, но одновременно одна из самых быстрых. Такие хранилища позволяют хранить в памяти по определенному ключу любые данные, это может быть просто число или текст, а может быть сериализованный объект. Ярким представителем такой схемы является популярный сейчас memcached и менее популярные: Redis, Scalaris, Tokyo Cabinet, Voldemort.

Документно-ориентированная

Каждая запись хранится как отдельный документ, имеющий собственный набор полей, который может отличаться от документа к документу. Популярные реализации такой модели — Lotus Notes, CouchDB, MongoDB.

Колоночно-ориентированная

Данные хранятся в столбцах вместо привычного хранения в строках. Это выгодно для различных архивов информации и каталогов, в которых большая часть вычислений происходит над подобными выборками данных. Представителями этой модели являются BigTable, HyperTable и HBase, а также Cassandra.

Графовая

Используют вершины и ребра графа для представления информации. Очевидно, что такая модель гораздо производительнее работает с данными представленными в виде графов, например социальных графов. Наиболее известные системы хранилища данных такого типа — neo4j, AllegroGraph, ActiveRDF.

Модель ключ/зачение проста и уже активно используется, колоночные и графовые модели весьма специфичны, а вот документные БД хоть и в новинку, но перспективны и имеют все шансы быть использованными в новых проектах.
652 просмотра
5 комментариев

Мнения ↓

Alger
10 Марта 17:26
Alger aka Alger
Перспективная вещь. Только вот сейчас как-то более распространены mysql, postgresql… Стоит ли переходить сейчас на noSQL, на какую именно?
Егор
11 Марта 20:08
Егор aka Sontan
Полностью переходить конечно пока рано. Но уже можно использовать их совместно. Например использование memcached, в связке с mysql, может снизить нагрузку в десятки, если не в сотни, раз.

В любом случае следует внимательно следить за этим рынком, будущее где-то там ;)
spurv_ewt
11 Марта 15:30
spurv_ewt
Интересная статейка, Егор… :) Только вот вопросики нашлись…

Ты выше написал, что BigTable относится к «Колоночно-ориентированной» БД. Хотя я, возможно, не совсем понял подобное разделение… но разве Goggle File System, на базе которого основано BigTable (как пишут в англ. документации), подходит под определение хранения данных только в так называемых столбцах?.. и как вообще понятия столбцов вяжутся с понятием файловой системы… мне почему-то казалось больше, что BigTable относится к типу «Ключ/значение» — потому что подобное понятие более лучше подходит для объяснения принципов ФС. Так же я как-то разбирался с принципом работы Datastore в рамках App Engine и понял, что это псевдоподобие основывается на JDO/JPA моделях, которые отражают как раз только схему «ключ-значение». Далее эта «псевдоБД» (псевдо BigTable) располагается на гугловских серверах и «расширяется» по каким-то законам самой BigTable, но эти законы/принципы закрыты для простого смертного внештата гугловских сервисов…

Это то, что я смог понять… Возможно где-то неправ… :)

И енто… что насчёт Simple DB, что применяется на «амазоновских облаках»?..

В заключение хотелось бы спросить, чем же собственно отличаются такие типы как «Ключ/Значение», «Документно-ориентированная» и «Колоночно-ориентированная»… С графами я понял суть (сам пытался скляпать в мускле что-то вроде модели графов)… С «ключ-значением» тоже всё понятно… Но в чём особенность второго и третьего перед первым?..

Вось пока и всё… :)
spurv_ewt
11 Марта 16:31
spurv_ewt
Хм, заинтересовавших этими вопросами, кое-что накопал в сети… Вообщем понял более подробнее, что это за «Документно-ориентированная» и «Колоночно-ориентированная» классификация… :)

И насчёт BigTable я скорее всего не совсем прав… :) Тут начал разбираться в HBase и пришёл к этой самой BigTable… Когда как HBase является колоночной бд… Получается, что если двигаться к BigTable от HBase получим один тип… если от Datastore — то другой… :) Поэтому, думаю, BigTable можно отнести в обе классификации… Так же как и то, что в Оракле применяется и колоночный тип, и графовый, и ключ-значение… И ещё понял, что большие объёмы как раз и связаны с колоночной стуктурой…

Хех, на этом всё и вопросы, пожалуй, можно снять… Нафлудил только тут… :))
Егор
11 Марта 20:00
Егор aka Sontan
Привет, да ты верно подметил, что BigTable является смешанным хранилищем. Вместе с Кассандрой их часто относят к Гибридной модели.

Статья не претендует на полное освещение темы. Скорее на краткий и поверхностный обзор. :)

И да, спасибо за комментарии!
Только зарегистрированные пользователи могут оставлять комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
© sontan.name, 2008–2010