У меня есть приложение для потокового воспроизведения, которое отвечает за объединение данных 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? Тогда при каждом обновлении это будет:
- десериализовано,
- соответствующие поля будут изменены,
- строка X будет переписана после сериализации.
Получившийся объект, который предполагается отправить в инструмент визуализации, выглядит следующим образом:
{
key: X,
timestamp: 123456789
sourceA: {
k1: v1,
k2: v2
},
sourceB: {
k3: v3,
k4: v4
}
sourceC: {
k5: v5,
k6: v6
}
}