- •2.1 Двенадцать правил Дейта, которым должна соответствовать рсубд.
- •2.2 Индексированные переменные.
- •2.3 Использование многомерных структур для хранения данных.
- •2.4 Многомерные структуры данных. Навигация в многомерных структурах данных.
- •2.5 Преимущества и недостатки распределенных субд.
- •2.6 Распределенные базы данных. Определение. Отличие между рбд и средствами распределенной обработки.
- •2.7 Распределенные субд. Однородные и разнородные рсубд.
- •2.8 Репликация данных в рбд.
- •2.9 Фрагментация данных в рбд.
- •2.10 Хранение объектов в многомерных структурах с учетом наследования и индексов.
- •2.11Архитектура субд hBase
- •2.12 Добавление и удаление записей в субд hBase
- •2.13 Извлечение одиночных записей в субд Hbase
- •2.14 Операция Scan в субд Hbase
- •2.15 Использование фильтров при извлечении данных в субд Hbase
- •2.16 Счетчики в субд Hbase
- •2.17 Создание таблицы в субд Hbase
- •2.18 Схема данных в субд Hbase
- •2.19 Операции Put и Get в пакетном режиме
- •2.20 Компоненты кластера субд Hbase
2.16 Счетчики в субд Hbase
В Hbase часто используется для сбора различной статистики и поэтому для упрощения работы со счетчиками в HBase реализованы соответствующие механизмы.
Long increment ColumnValue(
Byte[] row,
Byte[] family,
Byte[] qualifier,
Long amount) throws IOException
Result increment(Increment increment) throws IOException – для возможности увеличения нескольких счетчиков за один вызов
Increment(){}
Increment( byte[] row)
Increment addColumn(byte[] family, byte[] qualifier, long amount);
Counters
Daily 20111219
Weekly
Montly
HTable table = new HTable (conf, “counters”);
Long cnt1=table.IncrementColumnValue(
Bytes.ToBytes(“20111219”),
Bytes.ToBytes(“daily”),
Bytes.ToBytes(“hits”),1);
Increment inc1=new Increment(
Bytes.ToBytes(“20111219”));
Inc1.addColumn(bytes.toBytes(“daily”), Bytes.ToBytes(“clicks”),1);
Inc1.addColumn(Bytes.ToBytes(“daily”),Bytes.ToBytes(“hits”),1);
Inc1.addColumn(Bytes.ToBytes(“weekly”),Bytes.ToBytes(“hits”),1);
Result res1=table.increment(inc1);
2.17 Создание таблицы в субд Hbase
HBase предоставляет два способа создания таблиц, которые используют HBase клиент для подключения HBase мастера. Одним из них является использование экземпляра класса HBaseAdmin. HBaseAdmin предоставляет некоторые методы для создания, изменения и удаления таблиц и столбцов семей. Другой способ заключается в использовании экземпляра HTable класса. Этот класс предоставляет некоторые методы для работы с данными как вставка, изменение и удаление строк и ячеек.
Таким образом, для того, чтобы создать HBase таблицу, необходимо подключить HBase мастер инициализации экземпляра HBaseAdmin. HBaseAdmin требует экземпляр HBaseConfiguration.
Для того чтобы описать HBase схемы, создаются экземпляры HColumnDescriptor для каждого столбца семьи. В дополнение к именам столбцов семьи, HColumnDescriptor позволяет задавать различные параметры, такие как maxVersions, тип сжатия, TimeToLive и bloomFilter. Затем, мы можем создать HBase таблицу, вызывая CreateTable.
Например:
HBaseConfiguration conf = new HBaseConfiguration();
conf.set("hbase.master","localhost:60000");
HBaseAdmin hbase = new HBaseAdmin(conf);
HTableDescriptor desc = new HTableDescriptor("TEST");
HColumnDescriptor meta = new HColumnDescriptor("personal".getBytes());
HColumnDescriptor prefix = new HColumnDescriptor("account".getBytes());
desc.addFamily(meta);
desc.addFamily(prefix);
hbase.createTable(desc);
2.18 Схема данных в субд Hbase
Модель данных HBase представляет собой многомерную карту (map), в которой значения (ячеек таблицы) проиндексированы по четырем ключам:
value = Map (TableName, RowKey, ColumnKey, Timestamp)
где:
TableName является строкой;
RowKey и ColumnKey бинарные значения (типа Java byte[] );
Timestamp представляет собой 64-разрядное целое число (Java типа long );
value не интерпретируемый массив байт (Java ™ тип byte[] );
Двоичные данные кодируются в Base64 для передачи.
Ключ строки является первичным ключом таблицы. Строки сортируются по ключу в лексикографическом порядке.
Информация хранится в структурированной таблице колонки семей, которые вы можете распределить по категориям. Каждый столбец-семья может иметь произвольное число членов, определенные метки (или классификаторы).
Схема HBase таблицы определяет колонку семей, но приложения могут создавать новые члены на лету, когда вы вставляете строку в таблице. Для столбца семьи, разные строки в таблице могут иметь различное число членов. Другими словами, HBase поддерживает динамическую модель (схему) данных.