4. • За время добавления новой ноды данные
журнала частично перезаписываются. В итоге
новая нода так и не включается в работу
!
!
!
!
!
• Удаление данных не освобождает
пространство (уже освобождает -
usePowerOf2Sizes)
!
• Избыточность
8. • Доступность
• Линейная масштабируемость
• Нет единой точки отказа
• Настраиваемая целостность данных
• Поддержка и большое сообщество
Cassandra is a massively scalable open source
NoSQL database.
12. Хранение данных
SSTable (Sorted String Table) – простой формат для
эффективного хранения большого числа пар типа “key-
value”, оптимизирован для обеспечения высокой
пропускной способности при выполнении операций
последовательного чтения и записи данных.
13. • Объединеняет sstables для улучшения
производительности
!
• Очищает sstables от удаленных данных
!
• Перестраивает индексы
Compaction - периодический фоновый
процесс обслуживания хранимых данных
17. Size-tiered Compaction
Проблемы
Данные могут оказаться на любом количестве
sstables. В худшем случае чтение будет происходить
из всех имеющихся
!
Требуется слишком много дискового пространства
при компактинге и большом количестве deletes
18. Leveled
Основан на Google LevelDB. Sstables создаются
фиксированного размера и группируются по уровням.
Каждый новый уровень в 10 раз больше чем
предыдущий.
19. Преимущества Leveled
•
Leveled компактинг гарантирует, что 90% всех
чтений будут из одной sstable. В худшем случае
это будет чтение из 7ми sstables, что
соответствует 10TB хранимых данных.
Leveled
Size-tiered
21. Когда лучше использовать Leveled
• Read Latency очень важен
• Чтений больше чем записей
• Частые апдейты строк
• Много удалений
22. Когда лучше НЕ использовать
Leveled
• Если leveled слишком сильно
нагружает дисковую подсистему
• Много записей в cassandra
• Строки не обновляются или
обновляются очень редко
26. > nodetool cfstats
Keyspace: KeySpace1
Read Count: 4450035318
Read Latency: 1.118505269366269 ms.
Write Count: 3022969733
Write Latency: 0.02623819108644711 ms.
Pending Tasks: 0
Table: user_content
SSTable count: 12
SSTables in each level: [1, 0, 11, 0, 0, 0, 0, 0, 0]
Number of keys (estimate): 892032
Local read count: 323547
Local read latency: 1.248 ms
Local write count: 20194660
Local write latency: 0.017 ms
Bloom filter space used, bytes: 710616
Compacted partition minimum bytes: 61
Compacted partition maximum bytes: 2346799
!
Статистика по таблицам
27. > nodetool compactionstats
pending tasks: 7
compaction type keyspace column family completed total unit progress
Compaction Test Message 161257707087 2475323941809 bytes 6.51%
Статистика по компакшнам
30. Features
• съедает проц, а не диск — нужно больше ядер
• ssd - better, но не критично
• Java heap == 8 GB
• разные диски для данных и commit log
• стандартный GC
31. Проблемы, которые могут вас
затронуть
• corrupted sstable!
nodetool scrub
• high read latency and/or
dropped messages!
мониторинг
добавить ноды
пересмотреть модель данных
• gc, gc, gc, gc!
Java heap == 8GB
мониторинг
пересмотреть модель данных
!
32. Проблемы, которые могут вас
затронуть!
• host/cassandra/network down!
!
hinted handoff - журнал, позволяющий
восстановить данные при небольших
отказах
nodetool rebuild - пересоздание ноды,
актуальные данные запрашиваются из
кластера
nodetool repair - ищет и устраняет
неконсистентность данных
read repair - механизм, который
восстанавливает потерянные данные
при чтениях с нескольких нод