?

Log in

No account? Create an account

Пн, 1 апр, 2013, 02:13
Книги: март

Eric Redmond, Jim R. Wilson, «Seven Databases in Seven Weeks»

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

Узелки на память:

  • PostgreSQL
    Тут все понятно, честная реляционка, рассматривается в качестве «единичного отрезка». Пара примеров показались странными — то ли из-за особенностей Оракла, то ли авторы намерено упрощали материал.
  • Raik
    Сильнораспределенное хранилище пар ключ-значение, построенное на простых равноправных узлах, без сложных настроек объединяющихся в отказоустойчивый кластер. Красиво настраивается баланс между скоростью, надежностью и согласованностью (на сколько узлов дублировать данные; от скольки узлов дождаться подтверждения записи; сколько узлов опросить при чтении): характерные варианты (N, 1, N) — согласованость при чтении, (N, N, 1) — согласованость при записи, (N, N/2, N/2) — кворумная согласованость. Позволяет выполнять mapreduce-запросы. При чтении можно получить несколько версий данных и разрешение конфликта лежит на клиенте.
    Технологии: REST, Erlang, JavaScript.
  • HBase
    Ориентация на распределенную обработку больших объемов, фича: произвольно большое число столбцов. Не понял, что тут принципиально несовместимо с SQL. Так 40 лет назад вручную программировали запросы, только теперь вместо Кобола предлагается делать это на модном JRuby.
    Технологии: JRuby, Ruby, Thrift, экосистема Apache (Hadoop, HDFS, Zookeeper, Whirr).
  • MongoDB
    В отличие_от, MongoDB понимает структуру хранимых JSON-документов и позволяет писать adhoc-запросы, вкючая агрегатные функции. Имеются индексы, explain plan, хранимые процедуры — все это несколько сближает MongoDB с традициями реляционных СУБД. При этом он остается распределенной документо-ориентированной СУБД с поддержкой mapreduce. Данные могут реплицироваться (replica sets, обеспечивается согласованность при записи) и распределяться (sharding) на несколько узлов, имеется встроенная распределенная файловая система.
    Технологии: JSON, JavaScript.
  • CouchDB
    Хранит JSON-документы, но, в отличие от MongoDB, не поддерживает adhoc-запросы. Вместо этого для доступа к данным предлагаются материализуемые, индексируемые и динамически обновляемые представления на основе mapreduce-функций. Имеется API для получения изменений в базе (polling). При обновлениях используется «оптимистическая блокировка»: если данные успели измениться, разрешение конфликта ложится на клиента. Репликация всех данных (без шардинга) между равноправными узлами, конфликты при репликации также разрешает клиент.
    Технологии: JSON, JavaScript, REST, Node.js, Erlang.
  • Neo4j
    База данных для хранения произвольных направленных графов; вершины и ребра могут содержать информацию в виде пар ключ-значение. Запросы по сути представляют собой обход графа. Есть индексы, но их надо явно указывать и учитывать — все это столь же коряво, как в древних навигационных БД. Впрочем, альтернативные языки Gremlin и Cypher придают запросам декларативность. Поддерживаются ACID-транзакции, но не при работе в кластере.
    Технологии: Java, Gremlin/Groovy, Cypher, REST, JSON, Lucene, Blueprint, Zookeeper.
  • Redis
    Очень быстрая база данных, предоставляющая не только хранение пар ключ-значение, но и реализацию стандартных структур данных (хэш-таблицы; списки, стеки и очереди; множества; отсортированные множества; битовые операции), псевдотранзакционность путем отложенного выполнения серии операций, механизм устаревания данных, подписку на события — мешанина свойств, из которых что-нибудь да окажется полезным. Вся БД хранится в ОЗУ и ограничена его объемом, но данные можно сбрасывать на диск — частота настраивается. Поддерживается репликация.

Авторы считают, что на смену реляционно-центрическим системам приходят объединения многих синхронизированных NoSQL-баз данных, каждая из которых используется в той области, в которой она сильна (они называют это выражением polyglot persistence). А для меня стало понятно, что NoSQL — это в первую очередь веб, это скорость в обмен на согласованность и надежность. Финансовым приложениям со стороны NoSQL ничего не угрожает.

Узнал про фильтры Блума. Оракл использует в механизме хэш-соединений штуку, которая почти, но все-таки не совсем непохожа_на.

Л. Н. Королев, «Архитектура ЭВМ»

Книга Льва Николаевича, завкафедрой ВМК и моего научного руководителя. Поэтому именно так, по-академически: Л. Н. Ну и книга сама тоже такая академически-заунывная. Жаль,что среди сухих фактов не нашлось места живым эмоциям. Все равно ведь в каждой главе тянет поговорить о БЭСМ-6, так почему нет? И черт бы со всеми этими интелами и спарками, про них и в других книгах почитать можно.

А еще т. н. издательство не заморачиваясь напечатало рукопись без какой-либо правки, во всей кривизне ее набора и верстки, со всеми опечатками и убогими вордовыми иллюстрациями. Человек, не знакомый с автором, будет держаться от такой книги подальше. Обидно это.

«Стив Джобс о бизнесе»

Понадергали цитат да и издали. Есть и хорошие, вот, например:

  • Простое дается труднее, чем сложное: нужно много работать, чтобы мысль стала ясной и простой.
  • Люди говорят, что вы должны страстно любить то, что делаете, и это истинная правда. А причина в том, что это настолько трудно, что без страсти любой разумный человек бросил бы это дело.
  • Я считаю, что одним из самых ценных ресурсов, которые есть у всех нас, является свободное время.

На каждом развороте вместе с переводом напечатал и оригинал; это интересно и хорошо.

Пн, 1 апр, 2013 06:23 (UTC)
hardsign

Разрешите высказаться, товарищ.

Во-первых, rIAk.

Во-вторых, вот здесь то же, но короче и под музыку:



Для тех, кто не всё расслышал, слова: http://sevenweeks.org/post/24891440010/lyrics-to-seven-databases-in-song

Вт, 2 апр, 2013 15:42 (UTC)
egorius

С песнями к психиатру, ага.

Вт, 2 апр, 2013 15:51 (UTC)
hardsign

Я не понял, тебе песенка™ не понравилась?

Вт, 2 апр, 2013 18:05 (UTC)
egorius

Отличная песенка, спасибо_за на самом деле. Вот только визуализация не очень, надо было семь наперстков :)

Пн, 1 апр, 2013 12:11 (UTC)
18cc

Благодарю за как всегда интересный обзор. Слышали про набирающую обороты платформу онлайн обучения курсеру? Там через месяц начнется интересный курс по базам и проч. -- https://www.coursera.org/course/datasci.
Тут еще есть...

Вт, 2 апр, 2013 16:07 (UTC)
egorius

Столько всего, аж глаза разбегаются. Надо будет попробовать, спасибо!

Пн, 1 апр, 2013 20:12 (UTC)
nikname: К вопросу скорость в обмен на

недавно нарвался на забавную фичу в SQLite
insert into A(...) select ... from B,A where ...
Отбирает всё, соответствующее where до вставки и в общем случае лажается.

Вт, 2 апр, 2013 16:09 (UTC)
egorius

Это не фига, это баг. Оракл себе такого не позволяет, например.