Как преобразовать реляционную схему в схему Accumulo?

У меня есть основная проблема, для которой, я уверен, есть широко используемый шаблон. Я преобразовываю реляционную базу данных в хранилище Accumulo, но у меня возникают проблемы с отображением ассоциаций. Таблицы выглядят так:

comments
--------------
comments_id
incident_id
comment_text
poc_id

poc
---------
poc_id
fullname

Я начал со схемы Accumulo, которая кажется достаточно простой:

rowid        column_family column_qualifier value
-----        ------------  ---------------- -----
incident_id  comments      comment_text     this is a comment
incident_id  poc           fullname         bob jones

Проблема в том, что для каждого инцидента может быть несколько комментариев, каждый со своим POC. Как я могу связать комментарий с poc?


person CNDyson    schedule 02.08.2013    source источник


Ответы (1)


Есть много способов сохранить это.

Помните, что схема не является жесткой. Разные ряды могут следовать разным шаблонам. Предположим, у вас есть инцидент с несколькими комментариями. Записи могут выглядеть так:

rowID, cf:cq, v
===============

incident|<uuid1>, poc:fullname, bob jones
comment|<uuid2>, incident:key, incident|<uuid1>
comment|<uuid3>, incident:key, incident|<uuid1>  

Но описанный выше подход потребует от вас отдельного индексирования комментариев, чтобы вы могли быстро найти все комментарии, относящиеся к конкретному инциденту. Другим подходом может быть добавление квалификатора столбца в строку инцидента для каждого комментария.

rowID, cf:cq, v
===============

incident|<uuid1>, comment|<uuid2>:text, my comment
incident|<uuid1>, comment|<uuid3>:text, my second comment 
incident|<uuid1>, poc|<uuid4>:fullname, bob jones
incident|<uuid1>, poc|<uuid5>:fullname, john smith
person Scott    schedule 02.08.2013
comment
Но не потребует ли второй подход сохранения всего инцидента на нескольких планшетах? Вот чего я пытался избежать. - person CNDyson; 02.08.2013
comment
Кроме того, этот дизайн не учитывает несколько pocs. - person CNDyson; 03.08.2013
comment
При первом подходе весь ваш инцидент может охватывать несколько планшетов. При втором подходе все находится в одной строке, поэтому вы можете получить полную запись инцидента за одно сканирование. - person Scott; 03.08.2013
comment
Отредактировано для отображения нескольких POC. Вы просто следуете той же схеме для любых отношений. - person Scott; 03.08.2013
comment
Далее я отредактировал пример, чтобы показать тот же UID для комментария -> человек. Разве это не то, что я должен сделать? - person CNDyson; 03.08.2013
comment
ОЙ! комментарий имеет один poc. Я не уловил этого. Что ж, с вложенными отношениями это подтолкнет вас к первому подходу, но тогда вы сможете кэшировать (т. е. денормализовать) информацию comment/poc с инцидентом. Я должен просто начать с нового ответа, но я не могу сделать это прямо сейчас... - person Scott; 03.08.2013
comment
Кроме того, вот хорошая статья коллеги о довольно надежной схеме Accumulo для обработки произвольных отношений и индексации: mit.edu/~kepner/pubs/D4Mschema_HPEC2013_Paper.pdf - person Scott; 03.08.2013