понедельник, 25 ноября 2013 г.

О книге Мартина Фаулера “NoSQL Distilled”

clip_image002

“NoSQL Distilled” – это последняя книга Мартина Фаулера, посвященная модной ныне технологии NoSQL. Эта книга является финалистом престижной премии Jolt Award этого года и написана в стиле, аналогичном другой книге Фаулера – UML Distilled. Соавтором Мартина является Pramodkumar Sadalage, автор очень толковой книги “Refactoring Databases: Evolutionary Database Design”.

“NoSQL Distilled” является отличным источником информации для любого, кто хочет познакомиться с новомодным ныне миром NoSQL, понять, какие есть преимущества и недостатки, в каких случаях применение этой штуки будет оправданным, а когда лучше остаться со старым добрым RDBMS решением.

У книг Фаулера много положительных сторон, но мне больше всего нравится его прагматизм. О чем бы он ни писал или не говорил, будь то гибкие методологии, архитектура или дизайн, он всегда старается дать контекст, когда эта штука актуальна, а когда нет. Я не помню ни одного категоричного высказывания о важности конкретной методологии, конкретного паттерна или технологии.

ЦИТАТА
Первым и наиболее простым вариантом распределенной модели, которую мы советуем чаще всего, является отсутствие распределенности.

Так и в случае NoSQL Фаулер не рассматривает эту технологию (точнее набор технологий с некоторыми общими характеристиками), как некоторую панацею. Совсем наоборот, он пишет о том, что пришло время использовать тот инструмент, который максимально подходит для решения конкретных задач конкретным приложением. И если некоторые задачи этого приложения лучше решаются с помощью графовой базы данных (graph database), другие задачи – с помощью документно-ориентированной, а третьи – с помощью реляционной, ну что же, тогда стоит использовать их все, спрятав, желательно, за некоторым фасадным сервисом.

Таким образом, он предсказывает наступление эры polyglot persistence, когда разные инструменты будут использоваться для решения разных задач хранения данных, аналогично тому, как мы применяем разные языки программирования при решении разных прикладных задач.

При этом, опять же, когда речь заходит о преимуществах NoSQL решений, таких как отсутствие схемы (schemaless databases), то сразу же говорится о том, что на самом деле схема будет, просто ее определение переедет из базы данных в приложение (это так называя implicit schema), что хоть и упростит изменение этой самой схемы в течении жизни приложения, но не устранит всех проблем миграции.

ЦИТАТА
Корпоративные приложения часто используют одну СУБД; какую бы базу данных не выбрало предприятие в самом начале, очень много шансов, что все его приложения будут построены вокруг нее.

Очень порадовало описание известной CAP-теоремы, в особенности то, что не нужно подходить к компромиссу между доступностью и согласованностью (consistency vs. availability) как к дискретному понятию. Большинство NoSQL решений позволяют достаточно просто регулировать это отношение, задавая требуемое количество реплик для чтения и записи. Это позволяет найти компромисс между согласованностью и латентностью системы, причем сделать это не для всей системы, а для конкретных кусков данных.

ЦИТАТА
Часто говорят, что NoSQL базы данных не поддерживают ACID транзакций, жертвуя, таким образом, согласованностью. Это довольно упрощенная точка зрения. В общем случае, агрегатно-ориентированные базы данных действительно не поддерживают ACID транзакций при работе с несколькими агрегатами одновременно. Но, с другой стороны, они поддерживают атомарное манипулирование одним агрегатом в один момент времени.

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

Как насчет русского перевода?

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

Я читал на английском, поэтому за перевод ничего сказать не могу. Со вторым названием, которое в оригинале звучит так: “A Brief Guide to the Emerging World of Polyglot Persistence”, переводчики явно не справились, в результате чего на обложке русского издания красуется замечательная фраза: «Новая методология разработки нереляционных баз данных». Но я надеюсь, что это не показательJ

Вердикт: чтиво.

Дополнительные ссылки

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

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