- •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.15 Использование фильтров при извлечении данных в субд Hbase
Фильтры позволяют получать данные, получаемые операцией сканирования. Фильтровать можно по значению RowKey строки, по ColumnFamily, Column, по значению ячейки.
При выполнении фильтрации используются следующие операции сравнения.
LESS, LESS_OR_EQUAL, EQUAL, NOT_EQUAL, GREATER_OR_EQUAL, GREATER, NO_OP(исключить все).
WritableByteArrayComparable – интерфейс
BinaryComparator
BinnaryPrefixComparator
RegexStringComparator
RowFilter
FamilyFilter
QualifierFilter
ValueFilter (перебор по хранимым значениям)
Осуществляет поиск во всех столбцах таблиц. Для поиска по значению в конкретном столбце используется фильтр SystemColumnValueFilter
SingleColumnFamilyExcludeFilter
Фильтр исключает из выборки строки, в которых значение указанного столбца соответствует указанному фильтру.
PrefixFilter
Возвращает все строки, ключи которых соответствуют указанному префиксу
PrefixFilter(byte[] prefix)
PageFilter
Позволяет возвращать данные страницами
KeyOnlyFilter
Значения не передаются. Только ключи
FirstKeyOnlyFilter
Возвращает только первую колонку
InclusiveStopFilter
Если необходимо включить и начальное значение и конечное значение интервала, то необходимо использовать StartRow для начального значения и InclusiveStopFilter для конечного значения
ColumnPaginationFilter
Возвращает результат порциями. В качестве порций – столбцы
ColumnPaginationFilter(int limit, int offset)
ColumnPrefixFilter(byte[] prefix)
RandomRowFilter(float chanse)
Фильтры декораторы:
whileMatchFilter – может расширять функциональность других фильтров и использоваться чтобы вернуть порцию данных, соответствующих фильтру до 1го значения, которое не соответствует.
FilterList – используется для того, чтобы одновременно установить несколько фильтров (добавление фильтра - addFilter).
Реализовать фильтр можно с помощью интерфейса:
Filter
FilterBase
Public interface Filter extends Writable{
Public enum ReturnCode{
INCLUDE, SKIP, NEXT_COL, NEXT_ROW, SEEK_NEXT_USING_HINT
}
Public void reset()
Public Boolean filterRowKey(byte[] buffer, int offset, int length);
Public Boolean filterAllRemining();
Public ReturnCode filter KeyValue(KeyValue v);
Public void filterRow(List<KeyValue vvs>);
Public Boolean hasFilterRow();
Public Boolean FilterRow();
Public KeyValue getNextKeyHint(keyValue curr);
Перечисление используется методом FilterKeyValue качестве возвращаемого значения для того, чтобы указать серверу что он должен делать, встретив определенное значение.
Результаты: INCLUDE – данное значение должно попасть в результирующий набор данных
SKIP – значение надо пропустить
NEXT_COL – необходимо пропустить остаток текущей колонки
NEXT_ROW – необходимо пропустить остаток строки
SEEK_NEXT_USING_HINT – необходимо пропустить несколько значений и перейти к следующему с помощью метода getNextKeyHint;
FilterRow – импользуется для передачи целой записи клиенту
FilterKeyValue - для каждой пары KeyValue текущей строки чтобы определить вхождение этой пары в результирующий набор данных
Reset - выполняется после чтения строки для. Применяется для каждой строки
FilterRowKey - Позволяет остановить сканирование если он возвращает тру, то сканирование останавливается, иначе продолжается.
