УДК 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 (анг.)
ISBN 978-5-97060-453-3 (рус.)
© 2016 Jeff Carpenter, Eben Hewitt
© Оформление, издание, перевод,
ДМК Пресс, 2017
Стр.5
Содержание
Предисловие..................................................... 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
Содержание 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
Стр.8
8 Содержание
Построение логической модели данных .........................................................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
Содержание 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
Стр.10
10 Содержание
Кластеры и точки контакта ............................................................................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
Содержание 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
12 Содержание
Глава.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
Содержание 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
Стр.14