О.В. Сухорослов "Распределенные хранилища данных"

56
11 Распределенные хранилища данных О.В. Сухорослов [email protected] 11.05.2012 О.В. Сухорослов 11 Распределенные хранилища данных 11.05.2012 1 / 49

Upload: yandex

Post on 22-May-2015

3.772 views

Category:

Documents


2 download

DESCRIPTION

О.В. Сухорослов "Распределенные хранилища данных", 11.05.2012, место показа: МФТИ, Школа анализа данных (ШАД)

TRANSCRIPT

Page 1: О.В. Сухорослов "Распределенные хранилища данных"

11 Распределенные хранилища данных

О.В. Сухорослов

[email protected]

11.05.2012

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 1 / 49

Page 2: О.В. Сухорослов "Распределенные хранилища данных"

План лекции

Введение

HBase

Cassandra

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 2 / 49

Page 3: О.В. Сухорослов "Распределенные хранилища данных"

Реляционные СУБД

Фиксированная схема, построчное хранение, ACID, SQL,абстрагирование от уровня хранения данныхИзначально не ориентированы на работу с большими объемамиданных в распределенном режиме (+ с высокими скоростямичтения-записи)

Решения по репликации и распределению существующих РСУБДПопытки исправить ситуацию задним числомСложны в установке и сопровожденииСтатическое разбиение данных

Большой частью функциональности приходится жертвоватьJoin, сложные запросы, триггеры, представления, внешние ключии контроль ссылочной целостностиСтановятся очень дорогими в распределенном режиме или вообщене работаютНе удовлетворяют высоким требованиям по скоростичтения-записи

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 3 / 49

Page 4: О.В. Сухорослов "Распределенные хранилища данных"

Реляционные СУБД

Фиксированная схема, построчное хранение, ACID, SQL,абстрагирование от уровня хранения данныхИзначально не ориентированы на работу с большими объемамиданных в распределенном режиме (+ с высокими скоростямичтения-записи)

Решения по репликации и распределению существующих РСУБДПопытки исправить ситуацию задним числомСложны в установке и сопровожденииСтатическое разбиение данных

Большой частью функциональности приходится жертвоватьJoin, сложные запросы, триггеры, представления, внешние ключии контроль ссылочной целостностиСтановятся очень дорогими в распределенном режиме или вообщене работаютНе удовлетворяют высоким требованиям по скоростичтения-записи

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 3 / 49

Page 5: О.В. Сухорослов "Распределенные хранилища данных"

Реляционные СУБД

Фиксированная схема, построчное хранение, ACID, SQL,абстрагирование от уровня хранения данныхИзначально не ориентированы на работу с большими объемамиданных в распределенном режиме (+ с высокими скоростямичтения-записи)

Решения по репликации и распределению существующих РСУБДПопытки исправить ситуацию задним числомСложны в установке и сопровожденииСтатическое разбиение данных

Большой частью функциональности приходится жертвоватьJoin, сложные запросы, триггеры, представления, внешние ключии контроль ссылочной целостностиСтановятся очень дорогими в распределенном режиме или вообщене работаютНе удовлетворяют высоким требованиям по скоростичтения-записи

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 3 / 49

Page 6: О.В. Сухорослов "Распределенные хранилища данных"

Альтернативные решения (aka NoSQL1)

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

Нарушают классические принципы (нормализация данных,фиксированная схема, ACID) и отказываются от частифункциональности РСУБД (join, вторичные индексы)

Для большого класса задач позволяют делать то, чего не могутРСУБД

Хранить и обеспечивать быстрый, масштабируемый доступ к оченьбольшим таблицам на кластерах из массовых серверов

1http://en.wikipedia.org/wiki/NoSQL_(concept)О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 4 / 49

Page 7: О.В. Сухорослов "Распределенные хранилища данных"

Пример: webtable

Таблица, хранящая загруженные поисковым роботом страницы иих атрибуты

Количество записей в таблице - миллиардыКлючом является URL страницыАтрибуты - загруженное содержание, язык, MIME-тип,обработанный текст, ссылки, изображения...

Работа с данными таблицыМассовая оффлайн обработка и аналитика (batch, MapReduce)Запись данных роботом (random access)Выдача закэшированного содержимого страниц поиском (randomaccess)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 5 / 49

Page 8: О.В. Сухорослов "Распределенные хранилища данных"

Примеры распределенных хранилищ

BigTable (Google)2

Dynamo (Amazon)3

HBaseCassandraVoldemortRiakHypertableMongoDBRedis...

Column vs Key-value storage2http://labs.google.com/papers/bigtable.html3http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 6 / 49

Page 9: О.В. Сухорослов "Распределенные хранилища данных"

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 7 / 49

Page 10: О.В. Сухорослов "Распределенные хранилища данных"

HBase

Распределенная “база данных” для HadoopОриентирована на случайный доступ к большим данным в режимереального времениРеализована по образу Google BigtableРаботает поверх HDFS

Проект Apache (май 2010)http://hbase.apache.org/

ПользователиFacebook, Twitter, Yahoo! ...

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 8 / 49

Page 11: О.В. Сухорослов "Распределенные хранилища данных"

Точнее...

Distributed,Versioned,Column-Oriented,High-Availability,High-PerformanceStore

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 9 / 49

Page 12: О.В. Сухорослов "Распределенные хранилища данных"

Концептуальная модель данных

Поименованные таблицы, в строках которых хранятся данные

Каждая строка таблицы имеетКлюч (primary key)Произвольный набор колонок

Колонки сгруппированы в “семейства” (column family)Семейства колонок должны быть заданы при создании таблицыВсе колонки семейства имеют общий префикс

content:data, content:language, content:type

Новые колонки внутри семейства можно создавать в любой момент

Внутри ячеек таблицы хранятся данныеПоддерживается хранение несколько версий данныхПо умолчанию версия идентифицируется с помощью временизаписи (timestamp)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 10 / 49

Page 13: О.В. Сухорослов "Распределенные хранилища данных"

Концептуальная модель данных

Поименованные таблицы, в строках которых хранятся данные

Каждая строка таблицы имеетКлюч (primary key)Произвольный набор колонок

Колонки сгруппированы в “семейства” (column family)Семейства колонок должны быть заданы при создании таблицыВсе колонки семейства имеют общий префикс

content:data, content:language, content:type

Новые колонки внутри семейства можно создавать в любой момент

Внутри ячеек таблицы хранятся данныеПоддерживается хранение несколько версий данныхПо умолчанию версия идентифицируется с помощью временизаписи (timestamp)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 10 / 49

Page 14: О.В. Сухорослов "Распределенные хранилища данных"

Концептуальная модель данных

Поименованные таблицы, в строках которых хранятся данные

Каждая строка таблицы имеетКлюч (primary key)Произвольный набор колонок

Колонки сгруппированы в “семейства” (column family)Семейства колонок должны быть заданы при создании таблицыВсе колонки семейства имеют общий префикс

content:data, content:language, content:type

Новые колонки внутри семейства можно создавать в любой момент

Внутри ячеек таблицы хранятся данныеПоддерживается хранение несколько версий данныхПо умолчанию версия идентифицируется с помощью временизаписи (timestamp)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 10 / 49

Page 15: О.В. Сухорослов "Распределенные хранилища данных"

Концептуальная модель данных

Поименованные таблицы, в строках которых хранятся данные

Каждая строка таблицы имеетКлюч (primary key)Произвольный набор колонок

Колонки сгруппированы в “семейства” (column family)Семейства колонок должны быть заданы при создании таблицыВсе колонки семейства имеют общий префикс

content:data, content:language, content:type

Новые колонки внутри семейства можно создавать в любой момент

Внутри ячеек таблицы хранятся данныеПоддерживается хранение несколько версий данныхПо умолчанию версия идентифицируется с помощью временизаписи (timestamp)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 10 / 49

Page 16: О.В. Сухорослов "Распределенные хранилища данных"

Концептуальная модель данных

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 11 / 49

Page 17: О.В. Сухорослов "Распределенные хранилища данных"

Физическая модель данных

Каждая ячейка таблицы хранится в виде(table, row, family:column, timestamp) -> dataПустые ячейки не хранятсяСодержимое ячейки является просто массивом байтНет встроенных типов данных

Строки таблицы отсортированы по ключу

Строки таблицы разбиты вертикально на семейства колонокДанные семейств колонок хранятся вместе (непрерывно на диске),в отсортированном порядке по rowid, column, timestamp

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 12 / 49

Page 18: О.В. Сухорослов "Распределенные хранилища данных"

Физическая модель данных

Каждая ячейка таблицы хранится в виде(table, row, family:column, timestamp) -> dataПустые ячейки не хранятсяСодержимое ячейки является просто массивом байтНет встроенных типов данных

Строки таблицы отсортированы по ключу

Строки таблицы разбиты вертикально на семейства колонокДанные семейств колонок хранятся вместе (непрерывно на диске),в отсортированном порядке по rowid, column, timestamp

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 12 / 49

Page 19: О.В. Сухорослов "Распределенные хранилища данных"

Физическая модель данных

Каждая ячейка таблицы хранится в виде(table, row, family:column, timestamp) -> dataПустые ячейки не хранятсяСодержимое ячейки является просто массивом байтНет встроенных типов данных

Строки таблицы отсортированы по ключу

Строки таблицы разбиты вертикально на семейства колонокДанные семейств колонок хранятся вместе (непрерывно на диске),в отсортированном порядке по rowid, column, timestamp

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 12 / 49

Page 20: О.В. Сухорослов "Распределенные хранилища данных"

Физическая модель данных

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 13 / 49

Page 21: О.В. Сухорослов "Распределенные хранилища данных"

Структура данных

1 SortedMap(2 RowKey , List(3 SortedMap(4 Column , List(5 Value , Timestamp6 )7 )8 )9 )

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 14 / 49

Page 22: О.В. Сухорослов "Распределенные хранилища данных"

Row-oriented vs Column-oriented

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 15 / 49

Page 23: О.В. Сухорослов "Распределенные хранилища данных"

Пример

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 16 / 49

Page 24: О.В. Сухорослов "Распределенные хранилища данных"

Распределеное хранение данных

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 17 / 49

Page 25: О.В. Сухорослов "Распределенные хранилища данных"

Распределение данных в HBase

Разбиение данныхТаблицы разбиваются горизонтально на регионы

[startkey , endkey)В самом начале таблица состоит из одного регионаПо мере увеличения размера таблицы происходит автоматическоеразбиение данных на новые регионы

Регионы распределяются между серверами HBase-кластера

Репликация данныхДанные регионов хранятся и реплицируются в HDFS

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 18 / 49

Page 26: О.В. Сухорослов "Распределенные хранилища данных"

Архитектура HBase-кластера

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 19 / 49

Page 27: О.В. Сухорослов "Распределенные хранилища данных"

Подробности

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 20 / 49

Page 28: О.В. Сухорослов "Распределенные хранилища данных"

Доступ к данным

Создание и удаление таблиц, колонок

Чтение данных (Get, Scan)По ключу: все или определенные колонки для строки с даннымключомПо времени: самое позднее значение, определенный моментвремени, N значений, все значенияПо диапазону: итератор по строкам (Scanner)

Начальный и конечный ключи, набор колонок, фильтр

Запись данных (Put)Атомарные изменения одной строки (row lock)Multi-row locking (new)

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 21 / 49

Page 29: О.В. Сухорослов "Распределенные хранилища данных"

Клиентские интерфейсы

Интерфейс командной строкиHBase Shell

Программный интерфейсJava API

Удаленные программные интерфейсыAvro, REST, Thrift

Web-интерфейс

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 22 / 49

Page 30: О.В. Сухорослов "Распределенные хранилища данных"

HBase Shell

1 hadoop2 -00:~$ hbase shell2 HBase Shell; enter ’help <RETURN >’ for list of supported commands.3 Type "exit <RETURN >" to leave the HBase Shell4 Version 0.90.1 - cdh3u0 , r, Fri Mar 25 16:10:51 PDT 20115

6 hbase(main ):001:0 > create ’test ’, ’data ’7 0 row(s) in 12.5240 seconds8

9 hbase(main ):002:0 > list10 TABLE11 test12 1 row(s) in 0.0390 seconds13

14 hbase(main ):003:0 > put ’test ’, ’row1 ’, ’data:1’, ’value1 ’15 0 row(s) in 0.1270 seconds16

17 hbase(main ):004:0 > put ’test ’, ’row2 ’, ’data:2’, ’value2 ’18 0 row(s) in 0.0360 seconds19

20 hbase(main ):005:0 > put ’test ’, ’row3 ’, ’data:3’, ’value3 ’21 0 row(s) in 0.0310 seconds

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 23 / 49

Page 31: О.В. Сухорослов "Распределенные хранилища данных"

HBase Shell

1 hbase(main ):006:0 > scan ’test ’2 ROW COLUMN+CELL3 row1 column=data:1, timestamp =1303416932470 , value=value14 row2 column=data:2, timestamp =1303416939804 , value=value25 row3 column=data:3, timestamp =1303416945399 , value=value36 3 row(s) in 0.2130 seconds7

8 hbase(main ):007:0 > disable ’test ’9 0 row(s) in 12.1800 seconds

10

11 hbase(main ):008:0 > drop ’test ’12 0 row(s) in 1.5430 seconds13

14 hbase(main ):009:0 > exit

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 24 / 49

Page 32: О.В. Сухорослов "Распределенные хранилища данных"

Java API (org.apache.hadoop.hbase.client)

1 public class ExampleClient {2 public static void main(String [] args) throws IOException {3 Configuration config = HBaseConfiguration.create ();4

5 // Create table6 HBaseAdmin admin = new HBaseAdmin(config );7 HTableDescriptor htd = new HTableDescriptor("test");8 HColumnDescriptor hcd = new HColumnDescriptor("data");9 htd.addFamily(hcd);

10 admin.createTable(htd);11 byte [] tablename = htd.getName ();

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 25 / 49

Page 33: О.В. Сухорослов "Распределенные хранилища данных"

Java API (org.apache.hadoop.hbase.client)

1 // Run some operations -- a put , a get , and a scan2 HTable table = new HTable(config , tablename );3 byte [] row1 = Bytes.toBytes("row1");4 Put p1 = new Put(row1);5 p1.add(Bytes.toBytes("data"), Bytes.toBytes("1"),6 Bytes.toBytes("value1"));7 table.put(p1);8 Get g = new Get(row1);9 Result result = table.get(g);

10 System.out.println("Get: " + result );11 Scan scan = new Scan ();12 ResultScanner scanner = table.getScanner(scan);13 try {14 for (Result scannerResult: scanner) {15 System.out.println("Scan: " + scannerResult );16 }17 } finally {18 scanner.close ();19 }20

21 // Drop the table22 admin.disableTable(tablename );23 admin.deleteTable(tablename );24 }25 }

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 26 / 49

Page 34: О.В. Сухорослов "Распределенные хранилища данных"

HBase и Hadoop MapReduce

Пакет org.apache.hadoop.hbase.mapreduce

Форматы данныхTableInputFormat

один map на каждый регион таблицы

TableOutputFormat

Базовые классы Map и ReduceTableMapperTableReducer

Утилита TableMapReduceUtil

Примеры использованияHBASE_DIST/src/examples/mapreduceCellCounter4

4http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java?view=markup

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 27 / 49

Page 35: О.В. Сухорослов "Распределенные хранилища данных"

HBase vs СУБД

СУБД HBaseData layout Row-oriented Column-orientedТранзакции Multi-row ACID Single row only

Язык запросов SQL get/put/scan/...Индексы Произвольные колонки Ключи записей

Максимальный объем Терабайты 1PBЧтение/Запись 1K запросов/сек 1M запросов/сек

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 28 / 49

Page 36: О.В. Сухорослов "Распределенные хранилища данных"

HBase vs HDFS?

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 29 / 49

Page 37: О.В. Сухорослов "Распределенные хранилища данных"

Область применения HBase

ДаRandom read/writeБольшое кол-во операций/сек + большой объем данныхЧасто повторяющиеся запросы

НетAppend + read all dataУникальные запросы (ad-hoc analytics)Данные могут быть размещены на одном сервере

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 30 / 49

Page 38: О.В. Сухорослов "Распределенные хранилища данных"

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 31 / 49

Page 39: О.В. Сухорослов "Распределенные хранилища данных"

Apache Cassandra 5

Распределенное хранилище с моделью данных по образу BigTableи децентрализованной архитектурой по образу Dynamo

Первоначальная разработка - Inbox Search @ Facebook, приучастии авторов Amazon Dynamo2008 - open source2010 - проект Apache Software Foundation2010 - Facebook перешел на использование HBase

5http://cassandra.apache.org/О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 32 / 49

Page 40: О.В. Сухорослов "Распределенные хранилища данных"

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

Keyspace = база данных (схема)Column family = таблица

статические / динамические

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 33 / 49

Page 41: О.В. Сухорослов "Распределенные хранилища данных"

Типы данных

ValidatorОпределяет тип данных для ключей и значений колонок

ComparatorОпределяет тип данных для имен колонокОпределяет порядок сортировки (и хранения) колонок

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 34 / 49

Page 42: О.В. Сухорослов "Распределенные хранилища данных"

Индексы

PrimaryПо значениям ключейСтроится автоматически

SecondaryПо значениям колонокСоздается по требованию

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 35 / 49

Page 43: О.В. Сухорослов "Распределенные хранилища данных"

Распределение данных между узлами

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 36 / 49

Page 44: О.В. Сухорослов "Распределенные хранилища данных"

Стратегия распределения данных

Определяется на уровне всего кластера

Random PatitionerИспользует стратегию consistent hashingtoken = MD5(row_key), 0− 2127

Обеспечивает равномерное распределение данных по узламРекомендуется использовать по-умолчанию

Ordered PartitionerДанные хранятся в отсортированном порядкеtoken = HEX(row_key_prefix)Позволяет делать range scansСложнее в настройке и администрировании

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 37 / 49

Page 45: О.В. Сухорослов "Распределенные хранилища данных"

Репликация

Стратегия репликации определяется для каждого keyspaceКол-во реплик (replication factor)Распределение реплик по узлам

SimpleStrategyNetworkTopologyStrategy

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 38 / 49

Page 46: О.В. Сухорослов "Распределенные хранилища данных"

Gossip

Децентрализованный (peer-to-peer) протокол, используемый дляобмена информацией между узлами

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

Seed nodes

Обнаружение отказов

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 39 / 49

Page 47: О.В. Сухорослов "Распределенные хранилища данных"

Обработка запросов клиентов

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 40 / 49

Page 48: О.В. Сухорослов "Распределенные хранилища данных"

Теорема CAP 6

В распределенной системе невозможно одновременно обеспечитьсвойства

согласованности данных (consistency)доступности (availability)устойчивости к разделению (partition tolerance)

Из трех свойств одновременно можно обеспечить только дваНеизбежный компромисс

Влияние на реализацию распределенного хранилищаВыбор реализуемых свойств на уровне системы (HBase=CP)Возможность выбора свойств пользователем на уровне отдельныхопераций (Cassandra)

6http://en.wikipedia.org/wiki/CAP_theoremО.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 41 / 49

Page 49: О.В. Сухорослов "Распределенные хранилища данных"

Уровни согласованности

Могут быть указаны для каждой Read/Write-операции

ONEТребуется ответ только от одной реплики

QUORUM (LOCAL_QUORUM, EACH_QUORUM)Требуется ответ от большинства реплик

ALLТребуется ответ от всех реплик

ANY (только для записи)Требуется ответ от любого узла (не обязательно реплики)

Строгая согласованность достигается при(nodes_written + nodes_read) > replication_factorW=1, R=ALL | W=ALL, R=1 | W=Q, R=Q

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 42 / 49

Page 50: О.В. Сухорослов "Распределенные хранилища данных"

Eventual Consistency

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

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 43 / 49

Page 51: О.В. Сухорослов "Распределенные хранилища данных"

Базовые механизмы восстановления согласованности

См. Amazon Dynamo

Hinted HandoffRead repairAnti-Entropy

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 44 / 49

Page 52: О.В. Сухорослов "Распределенные хранилища данных"

Атомарные операции и разрешение конфликтов

Атомарными являются только записи в одну строкуНесколько обновлений строки не являются атомарными

В случае неудачной записи, данные могут быть сохранены начасти репликОткаты не производятся

Для разрешения конфликтов используется timestamp,передаваемый клиентом при записи данных

При записи не осуществляется проверка на уникальность row key(UPSERT)

Есть риск случайно перезаписать данные

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 45 / 49

Page 53: О.В. Сухорослов "Распределенные хранилища данных"

Распределенные счетчики 7

7http://www.datastax.com/wp-content/uploads/2011/07/cassandra_sf_counters.pdf

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 46 / 49

Page 54: О.В. Сухорослов "Распределенные хранилища данных"

Клиенты

Thrift RPC API

Command-line (cassandra-cli)

Cassandra Query Language (CQL)Python, Java driverscqlsh

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 47 / 49

Page 55: О.В. Сухорослов "Распределенные хранилища данных"

Cassandra Query Language (CQL)

1 $ cqlsh 103.263.89.126 91602 cqlsh > CREATE KEYSPACE twissandra WITH3 strategy_class = ’NetworkTopologyStrategy ’4 AND strategy_options:DC1 = 3;5

6 cqlsh > USE twissandra;7

8 cqlsh > CREATE COLUMNFAMILY users (9 ... KEY varchar PRIMARY KEY ,

10 ... password varchar ,11 ... gender varchar ,12 ... session_token varchar ,13 ... state varchar ,14 ... birth_year bigint );15

16 cqlsh > INSERT INTO users (KEY , password) VALUES17 (’jsmith ’, ’ch@ngem3a ’) USING TTL 86400;18 cqlsh > SELECT * FROM users WHERE KEY=’jsmith ’;19 u’jsmith ’ | u’password ’,u’ch@ngem3a ’ | u’ttl ’, 86400

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 48 / 49

Page 56: О.В. Сухорослов "Распределенные хранилища данных"

Cassandra Query Language (CQL)

1 cqlsh > CREATE INDEX state_key ON users (state);2 cqlsh > CREATE INDEX birth_year_key ON users (birth_year );3

4 cqlsh > SELECT * FROM users5 WHERE state=’TX’ AND6 birth_year =’1968’;7 u’user1 ’ | u’birth_year ’ ,1968 | u’gender ’,u’f’ | ...

О.В. Сухорослов ()11 Распределенные хранилища данных 11.05.2012 49 / 49