Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Cassandra. Полное руководство

Покупка
Артикул: 712454.01.99
Доступ онлайн
749 ₽
В корзину
Из этой книги вы узнаете, как система управления базами данных Cassandra справляется с обработкой сотен терабайтов данных, работая в нескольких ЦОДах и сохраняя высокую доступность. Во втором издании, дополненном и охватывающем версию Cassandra 3.0, вы найдете технические детали и практические примеры, которые помогут запустить эту систему в боевых условиях. Авторы демонстрируют достоинства нереляционного дизайна Cassandra, уделяя особое внимание моделированию данных. Издание предназначено для разработчиков, администраторов баз данных и архитекторов, работающих с «большими данными» и стремящихся решить проблему масштабирования.
Карпентер, Д. Cassandra. Полное руководство / Д. Карпентер, Э. Хьюитт ; пер. с англ. А,А. Слинкина. - 2-е изд. - Москва : ДМК Пресс, 2017. - 400 с. - ISBN 978-5-97060-453-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027861 (дата обращения: 04.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Джефф Карпентер, Эбен Хьюитт

Cassandra.  

Полное руководство

Jeff Carpenter and Eben Hewitt

Cassandra:  
The Definitive Guide

Distributed data at web scale 

Second edition

Beijing • Boston • Farnham • Sebastopol • Tokyo 

Джефф Карпентер, Эбен Хьюитт

Cassandra.  
Полное руководство

Распределенные данные  
в масштабе веба

Второе издание

Москва, 2017

УДК 004.73:004.65Apache Cassandra
ББК 32.972.134

К26

Карпентер Д., Хьюитт Э.

К26
Cassandra. Полное руководство. 2-е изд. / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2017. – 400 с.: ил.

ISBN 978-5-97060-453-3

Из этой книги вы узнаете, как система управления базами данных Cassandra 

справляется с обработкой сотен терабайтов данных, работая в нескольких ЦОДах 
и сохраняя высокую доступность. Во втором издании, дополненном и охватывающем версию Cassandra 3.0, вы найдете технические детали и практические 
примеры, которые помогут запустить эту систему в боевых условиях. Авторы 
демонстрируют достоинства нереляционного дизайна Cassandra, уделяя особое 
внимание моделированию данных.

Издание предназначено для разработчиков, администраторов баз данных 

и архитекторов, работающих с «большими данными» и стремящихся решить 
проблему масштабирования.

УДК 004.73:004.65Apache Cassandra
ББК 32.972.134

Authorized Russian translation of the English edition of Cassandra: The 

Definitive Guide, 2nd Edition.

This translation is published and sold by permission of O’Reilly Media, Inc., 

which owns or controls all rights to publish and sell the same.’

Все права защищены. Любая часть этой книги не может быть воспроиз
ведена в какой бы то ни было форме и какими бы то ни было средствами без 
письменного разрешения владельцев авторских прав.

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

ISBN 978-1-491-93366-4 (анг.)
© 2016 Jeff Carpenter, Eben Hewitt

ISBN 978-5-97060-453-3 (рус.)
© Оформление, издание, перевод, 

ДМК Пресс, 2017

Посвящаю своей возлюбленной, Элисон Браун.
Я слышу звуки скрипок задолго до того, как 
они начинают играть1.
– Эбен Хьюитт

Посвящаю Стефани.
Ты для меня источник вдохновения, неизменная опора, любовь всей моей жизни.
— Джефф Карпентер

1 Цитата из песни Sway (M. D. House). – Прим. перев.

Содержание

Предисловие..................................................... 14

Предисловие..................................................... 16

Вступление....................................................... 18

Глава.1..За.пределами.реляционных.баз.данных...... 25
Что не так с реляционными базами данных? .................................................. 25
Краткий обзор реляционных баз данных ......................................................... 30

РСУБД: великие и не очень ............................................................................. 31

Масштаб веба .............................................................................................................. 39
Восхождение NoSQL ............................................................................................... 40
Резюме .......................................................................................................................... 42

Глава.2..Введение.в.Cassandra.............................. 44
Краткая презентация Cassandra ........................................................................... 44

Cassandra в 40 словах .......................................................................................... 44
Распределенная и децентрализованная ....................................................... 45
Эластичная масштабируемость ...................................................................... 46
Высокая доступность и отказоустойчивость ............................................. 47
Настраиваемая согласованность .................................................................... 48
Теорема CAP Брюера .......................................................................................... 51
Строковая база ...................................................................................................... 56
Высокая производительность ......................................................................... 58

Как появилась Cassandra? ...................................................................................... 58

История версий .................................................................................................... 60

Подходит ли Cassandra для моего проекта? .................................................... 67

Крупное развертывание ..................................................................................... 67
Много операций записи, статистика, анализ ............................................. 67
Территориальная разнесенность .................................................................... 68
Быстро эволюционирующие приложения .................................................. 68

Резюме .......................................................................................................................... 70

Глава.3..Установка.Cassandra................................ 71
Установка из дистрибутива Apache .................................................................... 71

Содержание  7

Распаковка дистрибутива ................................................................................. 71
Что внутри? ........................................................................................................... 72

Сборка из исходного кода ...................................................................................... 73

Дополнительные цели сборки ......................................................................... 75
ОС Windows ........................................................................................................... 76
ОС Linux ................................................................................................................. 77
Запуск сервера ...................................................................................................... 77
Остановка Cassandra ........................................................................................... 79

Другие дистрибутивы Cassandra ......................................................................... 80
Запуск оболочки CQL ............................................................................................. 81
Простые команды cqlsh ........................................................................................... 82

cqlsh Help ................................................................................................................ 82
Описание окружения в cqlsh ........................................................................... 84
Создание пространства ключей и таблицы в cqlsh .................................. 84
Запись и чтение данных в cqlsh ...................................................................... 88

Резюме .......................................................................................................................... 89

Глава.4..Язык.Cassandra.Query.Language................. 90
Реляционная модель данных ................................................................................ 90
Модель данных Cassandra ...................................................................................... 91

Кластер .................................................................................................................... 95
Пространства ключей ......................................................................................... 95
Таблицы ................................................................................................................... 95
Столбцы .................................................................................................................. 97

Типы данных в CQL ................................................................................................. 99

Числовые типы данных ..................................................................................... 99
Текстовые типы данных ...................................................................................100
Типы времени и идентификации .................................................................101
Прочие простые типы данных .......................................................................103

Коллекции .................................................................................................................104
Пользовательские типы ........................................................................................107
Вторичные индексы ...............................................................................................110
Резюме ........................................................................................................................112

Глава.5..Моделирование.данных..........................113
Построение концептуальной модели данных ...............................................113
Проектирование реляционной базы данных .................................................115

Различия в проектировании для РСУБД и Cassandra .........................115

Определение запросов в приложении .............................................................119

 Содержание

Построение логической модели данных .........................................................120

Логическая модель данных отеля ................................................................122
Логическая модель данных о бронировании ...........................................124

Построение физической модели данных ........................................................126

Физическая модель данных отеля ...............................................................127
Физическая модель данных о бронировании ..........................................128
Материализованные представления ...........................................................129

Оценка и уточнение ...............................................................................................131

Вычисление размера раздела .........................................................................132
Оценка места, занятого на диске ..................................................................133
Разбиение больших разделов ........................................................................134

Определение схемы базы данных ......................................................................135

DataStax DevCenter ..........................................................................................138

Резюме ........................................................................................................................139

Глава.6..Архитектура.Cassandra...........................140
Центры обработки данных и стойки ................................................................140
Сплетни и обнаружение отказов .......................................................................142
Осведомители ...........................................................................................................144
Кольца и маркеры ...................................................................................................145
Виртуальные узлы ..................................................................................................147
Разделители ..............................................................................................................147
Стратегии репликации ..........................................................................................148
Уровни согласованности ......................................................................................149
Запросы и узлы-координаторы ..........................................................................150
Таблицы в памяти, файлы SSTable и журналы фиксаций ........................151
Кэширование ............................................................................................................154
Вручение напоминаний ........................................................................................154
Облегченные транзакции и Paxos .....................................................................156
Надгробья ..................................................................................................................157
Фильтры Блума .......................................................................................................158
Уплотнение ................................................................................................................159
Антиэнтропия, исправление и деревья Меркла ...........................................160
Многоступенчатая событийно-ориентированная архитектура (SEDA) .....
162
Диспетчеры и службы ...........................................................................................164

Демон Cassandra .................................................................................................164
Движок хранения ...............................................................................................164
Служба хранения ...............................................................................................165
Прокси хранения ................................................................................................165

Содержание  9

Служба обмена сообщениями .......................................................................166
Диспетчер потоков данных ............................................................................166
Сервер транспортного протокола CQL ......................................................166

Системные пространства ключей ......................................................................167
Резюме ........................................................................................................................169

Глава.7..Настройка.Cassandra..............................170
Диспетчер кластера Cassandra ............................................................................170
Создание кластера ..................................................................................................171
Узлы-распространители .......................................................................................175
Разделители ..............................................................................................................176

Разделитель Murmur3Partitioner .................................................................176
Разделитель RandomPartitioner ....................................................................176
Разделитель OrderPreservingPartitioner ....................................................176
Разделитель ByteOrderedPartitioner ...........................................................177

Осведомители ...........................................................................................................178

Простой осведомитель .....................................................................................178
Осведомитель на основе файла свойств ....................................................178
Сплетничающий осведомитель с файлом свойств .................................179
Осведомитель, догадывающийся о стойках .............................................179
Облачные осведомители .................................................................................180
Динамический осведомитель ........................................................................180

Конфигурация узлов ..............................................................................................181
Маркеры и виртуальные узлы ............................................................................181

Сетевые интерфейсы ........................................................................................182
Хранение данных ...............................................................................................183
Параметры JVM и протоколирования .......................................................185

Добавление узлов в кластер ................................................................................185
Динамическое присоединение к кольцу .........................................................187
Стратегии репликации ..........................................................................................188

Стратегия SimpleStrategy ................................................................................189
Стратегия NetworkTopologyStrategy...........................................................190

Изменение коэффициента репликации ..........................................................191
Резюме ........................................................................................................................192

Глава.8..Клиенты...............................................193
Hector, Astyanax и другие устаревшие клиенты ...........................................193
Драйвер DataStax для Java ..................................................................................194

Настройка среды разработки .........................................................................195

 Содержание

Кластеры и точки контакта ............................................................................195
Сеансы и пулы соединений ............................................................................197
Объекты Statement ............................................................................................199
Политики ..............................................................................................................207
Метаданные .........................................................................................................211
Отладка и мониторинг .....................................................................................215

Драйвер DataStax для Python .............................................................................217
Драйвер DataStax для Node.js .............................................................................218
Драйвер DataStax для Ruby ................................................................................219
Драйвер DataStax для C# .....................................................................................219
Драйвер DataStax для C/C++ ............................................................................220
Драйвер DataStax для PHP .................................................................................222
Резюме ........................................................................................................................222

Глава.9..Чтение.и.запись.данных..........................223
Запись .........................................................................................................................223

Уровни согласованности при записи ..........................................................224
Путь записи в Cassandra ..................................................................................226
Запись файлов на диск .....................................................................................228
Облегченные транзакции ................................................................................230
Пакеты ...................................................................................................................233

Чтение .........................................................................................................................235

Уровни согласованности при чтении ..........................................................236
Путь чтения в Cassandra ..................................................................................238
Исправление на этапе чтения ........................................................................241
Запросы по диапазону, упорядочение и фильтрация ............................241
Функции и агрегаты .........................................................................................244
Разбиение на страницы ....................................................................................249
Упреждающее выполнение .............................................................................252

Удаление .....................................................................................................................252
Резюме ........................................................................................................................254

Глава.10..Мониторинг.........................................255
Протоколирование .................................................................................................255

Динамическое наблюдение за журналом ..................................................257
Изучение журналов...........................................................................................258

Мониторинг Cassandra средствами JMX ........................................................259

Подключение к Cassandra через JConsole .................................................261
Краткий обзор MBean-объектов ...................................................................264

Содержание  11

MBean-объекты Cassandra ...................................................................................267

MBean-объекты, относящиеся к базе данных ..........................................270
MBean-объекты, относящиеся к сети .........................................................275
MBean-объекты, относящиеся к метрикам ...............................................276
MBean-объекты, относящиеся к потокам..................................................277
MBean-объекты, относящиеся к службам .................................................278
MBean-объекты, относящиеся к безопасности .......................................278

Мониторинг с помощью nodetool ......................................................................278

Получение информации о кластере ............................................................279
Получение статистики .....................................................................................282

Резюме ........................................................................................................................284

Глава.11..Обслуживание.....................................285
Проверка исправности ..........................................................................................285
Базовое обслуживание ..........................................................................................286

Сброс на диск ......................................................................................................286
Очистка .................................................................................................................287
Исправление ........................................................................................................288
Переиндексирование ........................................................................................293
Перемещение маркеров ...................................................................................294

Добавление узлов ....................................................................................................294

Добавление узлов в существующий центр обработки данных ..........294
Добавление центра обработки данных в кластер ...................................296

Обработка отказа узла ...........................................................................................297

Ремонт узлов .......................................................................................................298
Замена узлов ........................................................................................................299
Исключение узлов .............................................................................................300

Переход на новую версию Cassandra ................................................................303
Резервное копирование и восстановление .....................................................305

Создание снимка ................................................................................................306
Удаление снимка ................................................................................................307
Включение инкрементного резервного копирования ...........................307
Восстановление из снимка .............................................................................308

Утилиты для работы с файлами SSTable ........................................................309
Средства обслуживания .......................................................................................310

DataStax OpsCenter ...........................................................................................310
Netflix Priam .........................................................................................................313

Резюме ........................................................................................................................313

 Содержание

Глава.12..Настройка.производительности..............314
Управление производительностью ...................................................................314

Постановка целей ..............................................................................................314
Мониторинг производительности ...............................................................316
Анализ проблем с производительностью ..................................................317
Трассировка .........................................................................................................318
Методика настройки .........................................................................................322

Кэширование ............................................................................................................322

Кэш ключей ..........................................................................................................323
Кэш строк .............................................................................................................323
Кэш счетчиков ....................................................................................................324
Параметры, управляющие сохранением кэшей ......................................324

Таблицы в памяти ...................................................................................................325
Журналы фиксаций ................................................................................................326
Файлы SSTable .........................................................................................................328
Вручение напоминаний ........................................................................................329
Уплотнение ................................................................................................................330
Параллелизм и многопоточность ......................................................................333
Сеть и тайм-ауты .....................................................................................................335
Параметры JVM.......................................................................................................337

Память ...................................................................................................................337
Сборка мусора .....................................................................................................338

Утилита cassandra-stress ........................................................................................340
Резюме ........................................................................................................................343

Глава.13..Безопасность......................................344
Аутентификация и авторизация ........................................................................345

Аутентификация по паролю ...........................................................................345
Использование класса CassandraAuthorizer .............................................350
Ролевое управление доступом ......................................................................351

Шифрование .............................................................................................................352

SSL, TLS и сертификаты .................................................................................353
Шифрование трафика между узлами .........................................................354
Шифрование трафика между клиентами и узлами  ..............................357

Безопасность на уровне JMX ..............................................................................358

Обеспечение безопасности доступа через JMX ......................................358
MBean-объекты, относящиеся к безопасности .......................................360

Резюме ........................................................................................................................360

Содержание  13

Глава.14..Развертывание.и.интеграция..................361
Планирование развертывания кластера .........................................................361

Оценка размера кластера ................................................................................361
Выбор экземпляров ...........................................................................................363
Хранилище ...........................................................................................................364
Сеть .........................................................................................................................365

Развертывание в облаке ........................................................................................366

Amazon Web Services .........................................................................................367
Microsoft Azure ....................................................................................................369
Google Cloud Platform ......................................................................................370

Интеграция ................................................................................................................370

Apache Lucene, SOLR и Elasticsearch ..........................................................371
Apache Hadoop ....................................................................................................371
Apache Spark ........................................................................................................372

Резюме ........................................................................................................................380

Предметный.указатель.......................................381

Предисловие

Компания Facebook раскрыла исходный код Cassandra в июле 2008 года. Оригинальная версия была написана преимущественно двумя 
людьми: выходцами из Amazon и Microsoft. Большое влияние на нее 
оказала программа Dynamo – распределенное хранилище ключей 
и значений, впервые разработанное в Amazon. В Cassandra реализована модель репликации в духе Dynamo, не имеющая точек общего 
отказа, но при этом добавлена более эффективная модель данных на 
основе «семейства столбцов».
Я подключился к проекту в декабре того же года, когда компания 
Rackspace предложила мне разработать распределенную базу данных 
для своих нужд. Момент был выбран очень удачно, так как к моим 
услугам были все наиболее важные на тот момент масштабируемые 
базы данных с открытым исходным кодом – только выбирай. Несмотря на то что в активе Cassandra была только одна крупная система, ее 
архитектура показалась мне самой удачной, и я направил свои усилия 
на улучшение кода и создание сообщества.
Проект Cassandra был включен в инкубатор Apache и к моменту 
выхода из него в марте 2010 стал примером настоящей истории успеха. Среди его разработчиков числились компании Rackspace, Digg, 
Twitter и другие, которые не смогли бы написать свою базу данных 
с нуля, но вместе создали нечто значительное.
Сегодня Cassandra – совсем не та ранняя система, которая лежала (и до сих пор лежит) в основе поиска по папкам «Входящие» 
в Facebook; она превратилась в «безусловного лидера в области эффективной обработки транзакций» (по выражению Тони Бэйна) 
и пользуется заслуженной репутацией по части надежности и производительности в сочетании с высокой масштабируемостью.
По мере своего становления Cassandra привлекала все больше 
крупных пользователей, и, наконец, стало ясно, что без коммерческой 
поддержки не обойтись. Поэтому в апреле 2010 года мы вместе с Мэттом Пфейлем (Matt Pfeil) основали компанию Riptano. Способствовать внедрению Cassandra оказалось очень интересно и поучительно, 
в частности потому, что мы могли знакомиться с такими приложениями, которые не обсуждаются публично.

Предисловие  15

Также выявилась нужда в такой книге, как эта. Как и многие другие 
проекты с открытым исходным кодом, Cassandra исторически отличалась не самой лучшей документацией. Но даже после того как дела 
с документацией наладились, представление материала в виде книги 
все равно полезно.
Благодарю Эбена за то, что он взял на себя труд раскрыть науку 
и искусство разработки в среде Cassandra и развертывания системы. 
А читателю предоставляется возможность познакомиться с методичным изложением новых концепций.
— Джонатан Эллис
руководитель проекта Apache Cassandra,
сооснователь и технический директор компании DataStax

Предисловие

Я очень волнуюсь, сочиняя предисловие для нового издания книги 
«Cassandra. Полное руководство». Вы спросите, почему? Да потому, 
что это новое издание! Когда появилось первое издание этой книги, 
проект Apache Cassandra только-только появился на свет. С годами 
изменилось так много, что тогдашние пользователи с трудом узнали бы в сегодняшней базе данных ту, прежнюю. Всем известно, как 
трудно угнаться за такими быстро развивающимися проектами, как 
Apache Cassandra, и я безумно благодарен Джеффу за то, что он решился поведать о текущем состоянии дел миру.
Одно из самых важных новшеств этого издания – раздел о моделировании данных. Я не раз публично заявлял: модель данных – это 
то, что отличает успешный проект на основе Apache Cassandra от провального. Значительная часть книги посвящена тому, как правильно 
построить модель. Но про эксплуатационников тоже не забыли. В современной базе Apache Cassandra есть такие вещи, как виртуальные 
узлы, а также многочисленные средства для обеспечения согласованности данных – и все это объясняется в новом издании. В общем, 
рассказать есть о чем, так что полное руководство окажется весьма 
кстати!
Вне зависимости от поставленной цели очень хорошо, что вы решили побольше узнать об Apache Cassandra. Сейчас самое время включить этот инструментарий в свой арсенал. А опытным пользователям 
стоит освежить знания, чтобы не отстать от жизни. Как показывают 
недавние опросы, специалисты, знакомые с Apache Cassandra, – одни 
из самых востребованных и высокооплачиваемых на рынке разработки приложений и построения инфраструктуры. И это отчетливая 
тенденция в нашей индустрии. Если организации нужна база данных 
с высоким уровнем масштабирования, размещенная в нескольких 
центрах обработки данных и постоянно готовая к работе, то лучше 
Apache Cassandra не найти. Первая же попытка поиска вернет сотни 
компаний, связавших свою судьбу с нашей любимой базой данных. 
И для такого доверия есть основания – вы убедитесь в этом, читая 
книгу. Приложения естественно мигрируют в облако, а Cassandra 
продолжает поддерживать работу с динамично изменяющимися глобальными данными. Эта книга научит вас применять Cassandra в соб
Предисловие  17

ственных приложениях. Сделайте что-нибудь удивительное и предъявите свою историю успеха.
И наконец, приглашаю вас присоединиться к преуспевающему сообществу Apache Cassandra. Его членов можно найти в любом уголке 
мира, поэтому оно является одним из самых важных нетехнических 
ресурсов для новых пользователей. Нам повезло иметь такое процветающее сообщество, благодаря его совместной работе база данных 
Apache Cassandra стала еще лучше. Можете начать с простого – ходите на встречи и конференции, где сможете завязать знакомство со 
своими коллегами. Потом у вас, возможно, появится желание расширить свое участие, например писать статьи в блоге или проводить 
презентации, обогащая тем самым коллективный опыт и помогая 
новичкам, которые идут по вашим стопам. А там, глядишь, дойдет 
дело и до самого важного в любом проекте с открытым исходным кодом – деятельности технического характера. Напишите код, который 
исправит ошибку или добавит новую возможность. Отправьте в JIRA 
сообщение об ошибке или запрос на новую функциональность. Такие 
действия – показатель активности и доброго здравия проекта. Вам 
не понадобится никакой особый статус, просто создайте учетную 
запись – и вперед! А если столкнетесь с затруднениями, загляните 
снова в эту книгу или обратитесь к сообществу. Мы всегда готовы 
прийти на помощь.
Заинтересовались? Это хорошо!
Но хватит слов, пора перелистнуть страницу и приступить к учебе.

— Патрик Макфейдин,
главный пропагандист
Apache Cassandra, компания DataStax

Вступление

Почему именно Apache Cassandra?

Apache Cassandra – бесплатная распределенная система хранения 
данных с открытым исходным кодом, которая принципиально отличается от реляционных систем управления базами данных (РСУБД).
Проект Cassandra получил статус инкубаторного проекта Apache 
в январе 2009 года. Вскоре после этого команда разработчиков, возглавляемая Джонатаном Эллисом, выпустила версию Cassandra 0.3, 
а затем версии стали выходить регулярно. Систему Cassandra применяют некоторые крупнейшие интернет-компании, в т. ч. Facebook, 
Twitter и Netflix.
Во многом ее популярность объясняется выдающимися техническими характеристиками. Она надежна, легко масштабируется и допускает настройку уровня согласованности данных. Операции записи выполняет с фантастической скоростью, система может хранить 
сотни терабайтов данных, децентрализована и симметрична, так что 
точки общего отказа отсутствуют. База данных характеризуется высокой доступностью, предлагаются также средства моделирования 
данных на основе языка Cassandra Query Language (CQL).

Интересна ли вам эта книга?

Эта книга ориентирована на различные аудитории. Она будет полезна:
 
 разработчикам высокомасштабируемых приложений для работы с очень большими объемами данных, в частности социальных приложений для Web 2.0 и интернет-магазинов;
 
 архитекторам приложений или данных, которым нужно понимать, какие есть варианты создания высокопроизводительных, 
децентрализованных, эластичных хранилищ данных;
 
 администратору или разработчику баз данных, который знаком со стандартными реляционными СУБД и хочет понять, 
как можно реализовать отказоустойчивое, согласованное в конечном счете хранилище данных;

Доступ онлайн
749 ₽
В корзину