Предложение по схеме Hbase - PullRequest
       26

Предложение по схеме Hbase

2 голосов
/ 14 февраля 2012

Исходя из опыта работы с RDBMS, мне не требуется помощь или предложение по разработке схемы Hbase для приведенного ниже варианта использования.

Это приложение для создания отчетов, использующее hadoop. Теперь нам нужно отследить всю предыдущую историю создания отчетов для конкретного пользователя по его идентификатору электронной почты. Таким образом, данные должны быть сохранены, идентификатор электронной почты, имя отчета, дата начала, дата окончания, статус. Я планирую сохранить идентификатор электронной почты в качестве ключа строки и другие объекты в виде столбцов, emailId (ключ строки) - (столбцы) appName: reportName, appName: startDate, appName: endDate, appName: status

Но проблема в том, что один и тот же пользователь может запускать один и тот же отчет для разных диапазонов дат. Поэтому он будет перезаписывать столбцы appName: reportName и appName: status. Поскольку я новичок в мире NoSQL, я не уверен, как решить эту проблему. Может кто-нибудь предложить мне идеальный способ разработки схемы для этого требования?

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

1 голос
/ 14 февраля 2012

Исходя из вашего ожидаемого шаблона запроса, вот что я бы предложил:

RowKey                                 | Column Family (appName)                   |
userid@domain.com-YYYY-MM-DD HH:MM:SSS | reportName | status | startDate | endDate |

Этот дизайн дает вам несколько преимуществ. Прежде всего, вы можете быстро запросить (используя сканирование) все строки для определенного пользователя за определенный диапазон дат. Во-вторых, вы избегаете горячих точек записи, поставив метку времени в ключе строки с идентификатором пользователя.

Вы можете написать одну строку в этой схеме каждый раз, когда пользователь запускает генерацию отчета, и вам не нужно беспокоиться о перезаписи столбцов (если пользователь не генерирует два отчета за одну 1/10 секунды). ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...