Cassandra. Полное руководство
Покупка
Тематика:
Базы и банки данных. СУБД
Издательство:
ДМК Пресс
Перевод:
Слинкин Алексей Александрович
Год издания: 2017
Кол-во страниц: 400
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-453-3
Артикул: 712454.01.99
Доступ онлайн
В корзину
Из этой книги вы узнаете, как система управления базами данных Cassandra справляется с обработкой сотен терабайтов данных, работая в нескольких ЦОДах и сохраняя высокую доступность. Во втором издании, дополненном и охватывающем версию Cassandra 3.0, вы найдете технические детали и практические примеры, которые помогут запустить эту систему в боевых условиях. Авторы демонстрируют достоинства нереляционного дизайна Cassandra, уделяя особое внимание моделированию данных. Издание предназначено для разработчиков, администраторов баз данных и архитекторов, работающих с «большими данными» и стремящихся решить проблему масштабирования.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Джефф Карпентер, Эбен Хьюитт 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 и интернет-магазинов; архитекторам приложений или данных, которым нужно понимать, какие есть варианты создания высокопроизводительных, децентрализованных, эластичных хранилищ данных; администратору или разработчику баз данных, который знаком со стандартными реляционными СУБД и хочет понять, как можно реализовать отказоустойчивое, согласованное в конечном счете хранилище данных;
Доступ онлайн
В корзину