Разработка таблицы HBase для отслеживания состояния сложного объекта - PullRequest
0 голосов
/ 17 января 2019

У меня есть приложение для потокового воспроизведения, которое отвечает за объединение данных JSON с разных платформ в одну большую сущность. Части данных могут быть идентифицированы как принадлежащие одному объекту с помощью хорошо распределенного ключа, который всегда присутствует в каждой части данных. Затем предполагается, что эта сущность отправляется в инструмент визуализации в целом каждый раз, когда происходит изменение.

Поскольку изменение в этом объекте может происходить из разных источников, и мы всегда хотим рассматривать его как единое целое, входящие фрагменты данных сохраняются в HBase, и только тогда все это передается.

Это выглядит примерно так:

Data with key X from System A ->    1 Save data piece under row key X
                                    2 Get whole X row
                                          |
Data with key X from System B ->       The App       -> Visualization tool

Data with key X from System C ->

Я хотел бы знать, каков правильный дизайн таблицы HBase для такого варианта использования. Очевидно, что ключ строки должен быть значением X, но мне интересно знать о семействах столбцов и столбцах. Каково ваше мнение о наличии только одного столбца, в котором будет храниться сущность как весь JSON? Тогда при каждом обновлении это будет:

  1. десериализовано,
  2. соответствующие поля будут изменены,
  3. строка X будет переписана после сериализации.

Получившийся объект, который предполагается отправить в инструмент визуализации, выглядит следующим образом:

{
  key: X,
  timestamp: 123456789
  sourceA: {
    k1: v1,
    k2: v2
  },
  sourceB: {
    k3: v3,
    k4: v4
  }
  sourceC: {
    k5: v5,
    k6: v6
  }
}
...