Хранилище «отношений» от одной базы данных ко многим

#hbase

#hbase

Вопрос:

Я обдумываю наилучший способ реализовать отношения «один ко многим» в HBase.

Допустим, у УЧЕТНОЙ ЗАПИСИ много ТРАНЗАКЦИЙ. Лучше ли

а) Добавьте столбцы в семейство «транзакции: столбцы» в таблице СЧЕТОВ, то есть транзакции: 1: сумма, транзакции: 2: сумма

б) Хранить только ключи каждой ТРАНЗАКЦИИ, относящиеся к учетной записи, в семействе «транзакции: столбец» УЧЕТНОЙ записи» и выполнять поиск каждой транзакции, найденной в отдельной таблице ТРАНЗАКЦИЙ?

Ответ №1:

Как правило, вариант a является лучшим подходом.

Это позволяет вам легко запрашивать все транзакции для учетной записи одновременно. Для каждой транзакции дополнительный поиск не требуется.

Существуют варианты использования, где может подойти вариант b, например, часто выполняемые запросы ко всем транзакциям.

Ответ №2:

Я думаю, вариант (a) был бы в порядке, если бы единственным элементом данных, который необходимо отслеживать для учетной записи, была сумма. Однако, если вам нужно захватить много других элементов данных, я думаю, нам придется выбрать вариант (b), даже если он менее эффективен, чем (a)

Ответ №3:

Как насчет того, чтобы иметь значение в одном столбце и использовать разделитель типа $ и #. Ниже приведен пример данных:

 Column Family: Transactions
Column Value: $ transactionID:1#amount:100 $ transactionID:2#amount:200 $ transactionID:3#amount:300
  

Теперь вы можете использовать разделители $ и # для извлечения значений и использовать массивы строк для обработки данных.