пятница, 18 мая 2012 г.

Пост 1. NoSQL вводная.

Доброго времени суток!

Этим постом хотел бы открыть серию посвященную новому продукту компании Oracle : Oracle NoSQL Database.
Сперва хотел бы внести свои 5 копеек про NoSQL.
В моем понимании это новое семейство баз данных, которое ориентирована на быструю работу с большим объемом данных и экстремальным колличеством пользователей, расплатой за это становится функционал(ни join, ни count...). Произошло движение от сложного к простому. И действительно чем сложнее система, тем она медленнее, чем больше наворотов, тем дальше мы от возможностей физического мира (случайное чтение ~ 15 мкс, последовательное чтение ~ 100 Мб/c), добавляя все новый и новый слой функционала мы отдаляемся от заветных 15 мкс...

Спорить о том "хорошо или плохо NoSQL" я не хочу. Для каждой задачи есть свой инструмент, многие вещи (за исключением проектов крупных интернет гигантов типа Google, facebook...) можно было то сделать и на привычных реляционных БД, но тут встает вопрос что проще и целесообразнее? Возьмем к примеру палочки для суши, ими замечательно можно есть суши! А суп? А пиццу? Наверно не очень удобно :) С другой стороны есть столовая ложка, которой при некой доле снаровки можно съесть все что угодно (и суши и суп), только в некоторых случаях это будет с большое долей извращения. Это сугубо мое личное мнение и мое видение технологии, которое не претендует на истину в последней инстанции.
Мне вспоминается всем известный стишок из всеми любимого фильма "...по миру идет не спеша хорошая девочка Лида. Да чем же она хороша?", так чем же хороши эти базы данных?

Для начала стоит оговориться, что среди NoSQL выделяют 4 типа:
1) Key - value
2) Column famaly
3) Документоориентированные
4) Графориентированные
Подробнее вот тут
Я остановлюсь на БД типа ключ - значение (Key - value). В основу этого подхода положено то, что все данные разбиваются на пары ключ -значения, где ключ - это просто индекс, а значение набор байтов, расшифровывать которое будет приложение.
В реляционном мире это выглядело бы вот так:



Рис 1. Представление Key - Value в реляционном мышлении
Так все-таки где могут быть полезны такие БД? В первую очередь для хранения неструктурированной информации или полуструктурированной (фото, XML, JSON...). Для получения быстрого отклика на простые запросы (дай значение по ключу). Для хранения большого объема данных (терабайты, петабайты...). Для поддержания большого количества одновременно работающих пользователей. Ну и впринципе везде где использование реляционок не целесообразно (если не использутеся 99% функционала, а тот 1 процент есть в NoSQL альтернативе).

Постараюсь привести ряд примеров:
• Facebook
Почему? Данных очень много
• Google
Почему? Данных очень много
• Twitter
Почему? Данных очень много
Ну а если у меня нет ни гугла, ни твитера, ни фейсбука? :)

Тогда:
• LDAP подобные системы - простой ответ на простой вопрос
Почему? Это быстро!
• Хранилище USSD запросов мобильных пользователей
Почему? Нет четкой структуры исходных данных
• Персоонализация пользователей
Почему? Нет четкой стрктуры данных, постоянные доработки системы
• Сбор разнотипных данных со счетчиков
Почему? Требуется поддержка большого колличества одновременных сессий
• Логирование интернет трафика (CDR GPRS, web logs)
Почему? Данных очень много
• Хранилище файлов (фотографии, видео, текст)
Почему? Данных может быть очень много и к ним требуется быстрый доступ (системы аналогичные drop box, Google disk)
• Интернет магазины
Почему? Нет четкой структуры данных. Данных может быть много
• Антиспам системы
Почему? Очень много простых запросов (пример: Mollom)

Вот наверное и все что я хотел сказать про NoSQL.
В следующем посте будет рассмотрен конкретный продукт - Oracle NoSQL

Комментариев нет:

Отправить комментарий