Хранение объектов и связей между ними в HBase - PullRequest
3 голосов
/ 03 января 2011

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

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

Сами объекты могут иметь неограниченное количество связей с другими объектами и неограниченное количество произвольных атрибутов.Отношения также могут иметь атрибуты.Моя цель состоит в том, чтобы иметь два объекта «Person», которые связаны отношениями «Married», а отношение «Married» имеет атрибут «Date», и я хотел бы (в будущем) написать MapReduce для быстрого поиска всехлица, состоящие в браке между х и у.

1 Ответ

1 голос
/ 04 января 2011

Есть 2 шага (по мне).

  1. Хранение отношений
  2. Поиск данных.

Хранение отношений

  • Вариант A: сохранить отношение вместе с самими данными. Это ваш случай, когда таблица Person будет поддерживать свои брачные отношения. Для этого каждому браку человека понадобится уникальный идентификатор, уникальный только в пространстве человека. Например. Лица A, B и C. A был женат на B с 01.01.2000 - 01.01.2002, а A был женат на C с 01.01.2003 по сегодняшний день. С точки зрения A записи в ячейках выглядят так: брак: 1: до - B, брак: 1: начало - 01.01.2000, брак: 1: конец - 01.01.2002, брак: 2: до - C, брак : 2: начало - 01.01.2003. Этот дизайн подходит, если обновление происходит не слишком часто.
  • Вариант B: хранить отношения в своем собственном пространстве (таблица). Подходит, если отношения быстро меняются.

Поиск данных

Если результат поиска может ожидать завершения MapReduce, то все в порядке, но если вам нужны более быстрые результаты, я бы использовал и фактически использую другой инструмент для всех видов поиска, например, Упругий поиск, Apache Solr, Apache Lucene и т. Д. Запросы диапазона очень просты в инструментах поиска, таких как Solr, и результат будет быстрее, чем MapReduce. Еще одна причина выбора инструментов поиска - это получить порядок сортировки по мере необходимости.

...