Download - Базы данных. Cassandra

Transcript
Page 1: Базы данных. Cassandra

CassandraКурс «Базы данных»

Цесько Вадим Александровичhttp://incubos.org

@incubos

Computer Science Center

30 сентября 2013 г.

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 1 / 67

Page 2: Базы данных. Cassandra

Содержание

1 Введение

2 Модель данных

3 Архитектура

4 Детали реализации

5 Заключение

6 Домашнее заданиеЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 2 / 67

Page 3: Базы данных. Cassandra

Введение History

History

July 2008 — open-sourced by Facebook1

March 2010 — graduated from the Apache IncubatorInfluenced by Amazon DynamoCommitters: Rackspace, Digg, Twitter, Amazon,Microsoft

1Facebook. Cassandra — A Decentralized Structured Storage System:http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdfЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 3 / 67

Page 4: Базы данных. Cassandra

Введение Features

Features

Decentralized — no SPoF, every node is identicalMulti data center replicationElastic ScalabilityHigh Availability and Fault ToleranceTunable consistencyCQL

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 4 / 67

Page 5: Базы данных. Cassandra

Введение Data Model

Data Model

Based on Google BigtableHybrid: Key-value + Column-orientedКаждая строка содержит множество колонокКолонка (ячейка): имя + значениеРазные строки могут иметь разный набор колонокГруппировка колонок в семейства исуперсемейства

TableA distributed multi dimensional map indexed by a key

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 5 / 67

Page 6: Базы данных. Cassandra

Введение ACID

ACID

Никаких JOIN-ов и внешних ключейАтомарность на уровне строк, нет rollbackМожно получить ошибку при записи, но записьсостоитсяОтметки времени от клиента при конфликтахНастраиваемая консистентность (количествореплик)Изоляция на уровне строкDurability : commit log + replication

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 6 / 67

Page 7: Базы данных. Cassandra

Введение CAP

CAP

Tunable ConsistencyTunable AvailabilityPartition Tolerance

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 7 / 67

Page 8: Базы данных. Cassandra

Введение Пользователи

ПользователиСамое популярное колоночное хранилище2:

CiscoCERNDiggFacebookIBMNetflixRedditSoundCloudTwitterOdnoklassnikiYandex

2http://db-engines.com/en/ranking/wide+column+storeЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 8 / 67

Page 9: Базы данных. Cassandra

Введение Мотивация

Мотивация

If I had asked people whatthey wanted, they wouldhave said faster horses.

Henry Ford

Что не так с RDBMS?Очень рекомендую Chapter 1. "What’s Wrong withRelational Databases?"in "Cassandra: The DefiniteveGuide"a

aEben Hewitt. Cassandra: The Definitive Guide. 2010. ISBN1449390412.

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 9 / 67

Page 10: Базы данных. Cassandra

Введение Мотивация

У нас есть сервис на RDBMSВсё работает?Не трогай!

С чем могут быть проблемы:(Distributed) Transactions3

(Distributed) JOINs(Distributed) Schema evolutionSharding4

Functional segmentationKey-based shardingLookup table

3Gregor Hohpe. Starbucks Does Not Use Two-Phase Commit:http://www.eaipatterns.com/ramblings/18_starbucks.html

4Michael Stonebraker. The Case for Shared Nothing. 1986Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 10 / 67

Page 11: Базы данных. Cassandra

Введение Мотивация

Use Case: RDBMS Scaling

LiveJournalBrad Fitzpatrick. LiveJournal’s Backend: A history ofscalinga. August 2005.

ahttp://www.danga.com/words/2005_oscon/oscon-2005.pdf

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 11 / 67

Page 12: Базы данных. Cassandra

Введение Мотивация

Web Scale

IDC. The Expanding Digital Universe5. March 2007:YouTube: 2007 — 100 M videos/day, 2008 — 1 Bvideos/dayChevron: 2 TB/dayInternet: 2006 — 166 EB, 2010 — 1 ZBWall-Mart: 2000 — 110 TB, 2004 — 0.5 PBEmail: 1998 — 253 M accounts, 2010 — 2 B accountsetc.6

5http://www.emc.com/collateral/analyst-reports/expanding-digital-idc-white-paper.pdf

6http://highscalability.com/Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 12 / 67

Page 13: Базы данных. Cassandra

Модель данных

Модель данных

Cassandra — партиционированное хранилищерядовИсходим из запросов, а не из сущностей и связейТаблица — коллекция упорядоченных колонокKeyspace — группа таблиц (обычно per application)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 13 / 67

Page 14: Базы данных. Cassandra

Модель данных Если глубже

Если глубже

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 14 / 67

Page 15: Базы данных. Cassandra

Модель данных Интерфейсы

Интерфейсы

Thrift APIИсторически первыйНизкоуровневыйДовольно многословный

CQL (текущая версия 3.1)SQL-подобный(Почти насколько же) выразительныйРазвивается

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 15 / 67

Page 16: Базы данных. Cassandra

Модель данных CQL

Пример

1 CREATE TABLE songs (2 id uuid PRIMARY KEY,3 title text,4 album text,5 artist text,6 data blob7 );

1 CREATE TABLE playlists (2 id uuid,3 song_order int,4 song_id uuid,5 title text,6 album text,7 artist text,8 PRIMARY KEY (id, song_order));

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 16 / 67

Page 17: Базы данных. Cassandra

Модель данных CQL

Особенности

Compound keys (clustering)IndexesCollection types7: set, list, mapINSERT = UPDATE = UPSERTDELETE для строки или набора ячеекTTLCountersСм. спеку8

7http://www.datastax.com/dev/blog/cql3_collections8http:

//www.datastax.com/documentation/cql/3.1/webhelp/index.htmlЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 17 / 67

Page 18: Базы данных. Cassandra

Архитектура Компоненты

Компоненты

Consistent Hashing + VNodes (см. лекцию 1)Gossip — состав и состояние узловPartitioner — данные по узламReplica placement strategy — реплики поузламSnitch — топология (ДЦ и стойки)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 18 / 67

Page 19: Базы данных. Cassandra

Архитектура Компоненты

Virtual Nodes

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 19 / 67

Page 20: Базы данных. Cassandra

Архитектура Компоненты

GossipУзлы периодически обмениваются информацией осебе и других узлахКаждую секунду не больше чем с тремя узламиВсе узлы быстро узнают информацио обо всехузлахСообщения имеют версию — устаревшаяинформация затираетсяSeed nodes во избежания партиционированияGossip-информация хранится на каждой нодеперсистентноОбнаружение сбоев узлов (+ dynamic snitch)9

9Naohiro Hayashibara, Xavier Defago, Rami Yared and Takuya Katayama.The φ Accrual Failure Detector. 2008Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 20 / 67

Page 21: Базы данных. Cassandra

Архитектура Компоненты

Partitioner

Consistent Hashing10

Новый Murmur3Partitioner (−263 to +263) истарый RandomPartitioner (0 to 2127 − 1)ByteOrderedPartitioner

Лексикографически по байтам ключаСложная балансировка нагрузки (расчёт диапазоновпартиций вручную)Неравномерная балансировка для разных таблицПоследовательная запись упирается в один узел

10http://www.datastax.com/documentation/cassandra/2.0/webhelp/cassandra/architecture/architectureDataDistributeAbout_c.htmlЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 21 / 67

Page 22: Базы данных. Cassandra

Архитектура Компоненты

Replica Placement Strategy

Replication Factor — количество реплик на кластерКаждая реплика на отдельном узлеВсе реплики равноправныSimpleStrategy:

1 ДЦ (если планируете расширяться, не используйте)Первая реплика на узел от PartitionerОстальные — по часовой стрелке по кольцу

NetworkTopologyStrategy:Определяет количество реплик в каждом ДЦУзлы для реплик — идём по кольцу до следующейстойкиЧасто стойки вырубаются целиком (питание,охлаждение, сеть, ...)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 22 / 67

Page 23: Базы данных. Cassandra

Архитектура Компоненты

NetworkTopologyStrategy

ФакторыЖелательно чтение внутри ДЦУчитываем типичные сбои

По 2 реплики в каждом ДЦСбой одного узла — ConsistencyLevel.ONE

По 3 реплики в каждом ДЦСбой одного узла —ConsistencyLevel.LOCAL_QUORUMСбой двух узлов — ConsistencyLevel.ONE

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 23 / 67

Page 24: Базы данных. Cassandra

Архитектура Компоненты

SnitchОдинаковая конфигурация на узлахDynamic snitching wrapper11

По умолчанию и только на чтениеДанные с самой быстрой реплики, с остальных —контрольные суммыСтатистика Read Latency и текущие задачи узлов

SimpleSnitch: никаких ДЦ и стоекRackInferringSnitch: (110.dc.rack.node)PropertyFileSnitch: адреса в ДЦ/стойки вфайлеGossipingPropertyFileSnitch: локальный ДЦ истойка в файле на каждом узле + Gossip

11http://www.datastax.com/dev/blog/dynamic-snitching-in-cassandra-past-present-and-futureЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 24 / 67

Page 25: Базы данных. Cassandra

Архитектура Клиентские запросы

Клиентские запросы

Можно обращаться к любому узлуУзел становится координатором для текущегозапросаКоординатор проксирует с учётом Partitioner иReplica Placement Strategy

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 25 / 67

Page 26: Базы данных. Cassandra

Архитектура Клиентские запросы

Write

Запрос всем репликам независимо отConsistencyLevelConsistencyLevel определяет, сколько репликдолжно ответить для успеха

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 26 / 67

Page 27: Базы данных. Cassandra

Архитектура Клиентские запросы

Write: Пример

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 27 / 67

Page 28: Базы данных. Cassandra

Архитектура Клиентские запросы

MultiDC Write

Оптимизация — один координатор в каждомудалённом ДЦConsistencyLevel.ONE илиConsistencyLevel.LOCAL_QUORUM — обязаныответить только локальные узлы (география невлияет на задержку)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 28 / 67

Page 29: Базы данных. Cassandra

Архитектура Клиентские запросы

MultiDC Write: Пример

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 29 / 67

Page 30: Базы данных. Cassandra

Архитектура Клиентские запросы

Write: ConsistencyLevel

ANY — всегда успех (hinted handoff)ONE — в commit-log одного узлаTWOTHREEQUORUM — inter DC + нужен запас прочностиLOCAL_QUORUM — быстрее, чем QUORUMEACH_QUORUM — выше консистентностьALL — WAT?

Не забываемДаже при ONE и LOCAL_QUORUM запись пошлют всемрепликам в т. ч. в других ДЦЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 30 / 67

Page 31: Базы данных. Cassandra

Архитектура Клиентские запросы

Read

Read-запросы от координатора репликам:Прямой запрос на чтение (в соответствии сConsistencyLevel)

Самым «быстрым» репликамСравниваем ответыЕсли не совпадают, то самая свежая (поtimestamp) — клиенту

Фоновый read repair (всем остальным репликам)Для синхронизации «горячих» данныхread_repair_chance по умолчанию 0.1Если не совпадают хэши, то перезаписываем

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 31 / 67

Page 32: Базы данных. Cassandra

Архитектура Клиентские запросы

Read: Пример

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 32 / 67

Page 33: Базы данных. Cassandra

Архитектура Клиентские запросы

Read ConsistencyLevel

ONE — ближайшая реплика, возможно, устаревшиеданныеTWOTHREEQUORUM — inter DC + нужен запас прочностиLOCAL_QUORUM — быстрее, чем QUORUMEACH_QUORUM — выше консистентностьALL — WAT?

ИнтерпретацияВозвращаем самое свежее значение из требуемогомножества репликЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 33 / 67

Page 34: Базы данных. Cassandra

Архитектура Клиентские запросы

Quorum

QuorumQuorum = bRF2 + 1c

RF = 2⇒ Quorum = 2 — нет запасаRF = 3⇒ Quorum = 2 — в запасе 1 узелRF = 4⇒ Quorum = 3 — в запасе 1 узелRF = 5⇒ Quorum = 3 — в запасе 2 узла

ConsistencyR +W > RF

R = 2+W = 2 > RF = 3 — в запасе 1 узел

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 34 / 67

Page 35: Базы данных. Cassandra

Архитектура Клиентские запросы

Клиентские запросы

ПроблемаУзел сбойнул: железо или (чаще) сетьА мы хотим на него записатьЧто делать?

Hinted HandoffПусть известно (Gossip), что узел лежит, или узелне отвечаетКоординатор запоминает hint локальноКогда обнаружится, что узел поднялся (Gossip),ему перешлют накопленные hints

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 35 / 67

Page 36: Базы данных. Cassandra

Архитектура Клиентские запросы

Hint

СодержимоеКому предназначаетсяЗначение ключаДанные

ВниманиеHints хранятся ограниченное время (поумолчанию 3 часа)Официально рекомендуется периодический запускrepair

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 36 / 67

Page 37: Базы данных. Cassandra

Архитектура Клиентские запросы

Ограничения

Hint засчитывается не на всех уровняхконсистентности12: 2 узла (1 мёртв) + RF=1 +ConsistencyLevel.ONEНо всегда работает, если не выключенConsistencyLevel.ANY — extreme write availabilityЕсли умрёт машина с hints, то мы их потеряем

12http://www.datastax.com/dev/blog/modern-hinted-handoffЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 37 / 67

Page 38: Базы данных. Cassandra

Архитектура Клиентские запросы

Anti-entropy

ПроблемаУзел умер — пропустил удаление данныхВернулся к жизни — данные возродились

Anti-entropyИнициируем с помощью nodetool repairЗапускаем readonly major compactionСтроим Merkle Treea

Обмениваемся деревьями и ищем отличияОбмениваемся отличающимися сегментами

ahttp://en.wikipedia.org/wiki/Merkle_tree

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 38 / 67

Page 39: Базы данных. Cassandra

Детали реализации Хранение данных

Write Path

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 39 / 67

Page 40: Базы данных. Cassandra

Детали реализации Хранение данных

Пояснения

Memtables and SSTables per tableMemtable — отсортированаSSTable — неизменяемая отсортированнаяассоциативная таблицаОбычно строка распределена по несколькимSSTable

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 40 / 67

Page 41: Базы данных. Cassandra

Детали реализации Хранение данных

Пример

Команды:write (k1, c1:v1)write (k2, c1:v1 c2:v2)write (k1, c1:v4 c3:v3 c2:v2)

Commit-log:k1 , c1:v1k2 , c1:v1 c2:v2k1 , c1:v4 c3:v3 c2:v2

Memtable/SSTable:k1 c1:v4 c2:v2 c3:v3k2 c1:v1 c2:v2

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 41 / 67

Page 42: Базы данных. Cassandra

Детали реализации Хранение данных

Flush

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 42 / 67

Page 43: Базы данных. Cassandra

Детали реализации Хранение данных

Update Path

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 43 / 67

Page 44: Базы данных. Cassandra

Детали реализации Хранение данных

Delete

SSTable неизменяемаDelete — tombstone markerРеальное удаление по истеченииgc_grace_seconds во время compactionУдалённые данные могут возродиться (см.Anti-entropy)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 44 / 67

Page 45: Базы данных. Cassandra

Детали реализации Хранение данных

Compaction

Объединяет SSTable-файлыФрагменты строкПротухшие tombstonesПерестраивает индексы

SSTable отсортирована ⇒ последовательныйпроходSizeTieredCompactionStrategy иLeveledCompactionStrategy1314

13http://www.datastax.com/dev/blog/when-to-use-leveled-compaction

14http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandraЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 45 / 67

Page 46: Базы данных. Cassandra

Детали реализации Хранение данных

Read

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 46 / 67

Page 47: Базы данных. Cassandra

Детали реализации Хранение данных

Комментарии

Каждая SSTable имеет Bloom filter15 —вероятность нахождения ключа в файлеЕсли вероятность отлична от 0, идём в partitionkey cacheЕсли нашли ключ в кэше, идём по смещению,находим сжатый блок и достаём данныеЕсли не нашли ключ в кэше:

В partition summary примерно находим смещение надискеЧитаем последовательно блок с дискаИз compression offset map вынимаем индекс блокаЧитаем сжатые данные и возвращаем клиенту

15http://en.wikipedia.org/wiki/Bloom_filterЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 47 / 67

Page 48: Базы данных. Cassandra

Детали реализации Хранение данных

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

Bloom filter — 1-2 ГБ / млрд. ключейPartition summary — по умолчанию шаг 128Compression offset map — 1-3 ГБ / 1 ТБ сжатыхданных

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 48 / 67

Page 49: Базы данных. Cassandra

Детали реализации Хранение данных

Read Path

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 49 / 67

Page 50: Базы данных. Cassandra

Детали реализации Хранение данных

Write-through Row Cache

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 50 / 67

Page 51: Базы данных. Cassandra

Детали реализации Хранение данных

Key Cache + Row Cache

См. подробности16.16http://www.datastax.com/docs/1.1/operations/tuning

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 51 / 67

Page 52: Базы данных. Cassandra

Детали реализации CQL и колонки

CQL

1 CREATE TABLE comments (2 article_id uuid,3 posted_at timestamp,4 author text,5 karma int,6 content text,7 PRIMARY KEY (article_id, posted_at))

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 52 / 67

Page 53: Базы данных. Cassandra

Детали реализации CQL и колонки

Колонки

См. подробности17.17http://www.datastax.com/dev/blog/thrift-to-cql3

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 53 / 67

Page 54: Базы данных. Cassandra

Детали реализации CQL и колонки

Wide vs Skinny Rows

Wide Rows(+) Колонки отсортированы — возможны трюки18

(+/-) Атомарность(-) Row cache (скорее всего) не работает

Skinny Rows(+) Row cache(+/-) Неатомарно, но меньше contention(-) Больше записей — больше индексы, хужеработает Bloom Filter

18Класс!ная Cassandra: http://javapoint.ru/talks/15/Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 54 / 67

Page 55: Базы данных. Cassandra

Заключение Опыт использования

Опыт использования

Из Hadoop можно «положить» кластер — ждёмCqlOutputFormatДовольно много «ручек» для подкручиванияВнимание к GCРазвитые средства мониторингаПериодический nodetool repair

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 55 / 67

Page 56: Базы данных. Cassandra

Заключение Осталось за кадром

Осталось за кадром

SEDA19

Эксплуатация и тюнинг (JMX, nodetool)Масштабные примеры использования20

См. блог разработчиков21

19http://en.wikipedia.org/wiki/Staged_event-driven_architecture

20http://www.planetcassandra.org/blog/post/slideshare-presentations---cassandra-summit-2013

21http://www.datastax.com/dev/blogЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 56 / 67

Page 57: Базы данных. Cassandra

Заключение Следующая лекция

Следующая лекция

MongoDB (приглашённый доклад)

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 57 / 67

Page 58: Базы данных. Cassandra

Домашнее задание Требования (ещё раз)

Требования (ещё раз)

Проект на http://bitbucket.org (Hg) /http://github.com (Git) + Issue Tracking

Открытый проект — ссылку мне на почтуЗакрытый проект — мне админские права (incubos)

Обязательно: Scala/Java + ScalaTest/JUnit +Maven/SBTОбязательно: README + INSTALLКоманда 1-3 человека

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 58 / 67

Page 59: Базы данных. Cassandra

Домашнее задание На текущий момент

Feature Request 0

«Телефонная книга» (см. лекцию 01-intro22

слайд #26)ОбязательныйВыдан 2013-09-16Сгорает сегодня

22http://incubos.org/2013/edu/db/01-intro.pdfЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 59 / 67

Page 60: Базы данных. Cassandra

Домашнее задание На текущий момент

Зачёт хотят

https://github.com/Elizaveta239/Storage_system_cschttps://github.com/Feodorov/DBhttps://github.com/medvector/cscenter-databases13https://github.com/Noxoomo/DBCSC

WAT?!

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 60 / 67

Page 61: Базы данных. Cassandra

Домашнее задание На текущий момент

Feature Request 1

«Big data» per node (см. лекцию 04-commit23

слайд #64)Выдан 2013-09-23Сгорает 2013-10-14

23http://incubos.org/2013/edu/db/04-commit.pdfЦесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 61 / 67

Page 62: Базы данных. Cassandra

Домашнее задание На текущий момент

Кто всё-таки хочет участвовать

FR1 заменяет FR0Становится обязательнымНе засчитывается как дополнительный (неприносит балла)Всё так же сгорает 2013-10-14

Не забывайтеМожно участвовать командой до 3 человек

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 62 / 67

Page 63: Базы данных. Cassandra

Домашнее задание Система оценивания

Система оценивания

Будет выдано не меньше 6 Feature Requests (FR)Для каждого FR — жёсткий срок (но не меньше 2недель)За каждый FR — 0, 1 или 2 балла (за особоемастерство и креативность)Для зачёта нужно FR0/FR1 + 4 балла + отчётПроверяю каждые выходные (по возможностичаще)Ценю равномерный прогрессВедите стабильную и нестабильную веткиОбратная связь в виде issuesНе все issues закрыты — не зачтено

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 63 / 67

Page 64: Базы данных. Cassandra

Домашнее задание Feature Requests

FR2: Static Sharding

Равноправные узлыДанные распределены по кластеруСтатическая конфигурация (узлы и диапазоныключей)Клиент знает конфигурацию и куда ходитьТесты + TestabilityСгорает — 2013-10-14

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 64 / 67

Page 65: Базы данных. Cassandra

Домашнее задание Feature Requests

FR3: Master-Slave Replication

Commit-log от master к slavesСтатическая конфигурацияКлиент знает конфигурацию — пишет в master,читает из slavesТесты + TestabilityСгорает — 2013-10-21

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 65 / 67

Page 66: Базы данных. Cassandra

Домашнее задание Feature Requests

FR4: Scalability

Динамическая конфигурация (добавляем иудаляем ноды на лету)В простейшем случае 2PC новой конфигурацииGraceful DegradationConsistent HashingМиграция партиций при добавлении/удаленииузловТесты + TestabilityСгорает — 2013-10-28

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 66 / 67

Page 67: Базы данных. Cassandra

Вопросы?

Вопросы?

http://incubos.org/contacts/Общие вопросы — в Twitter: @incubosВопросы по лекциям — в комментариях:http://incubos.org/blog/Частные вопросы — в почту[email protected]

Цесько В. А. (CompSciCenter) Cassandra 30 сентября 2013 г. 67 / 67