2016-02-17 4 views
0

Мы разработали схему Hbase, которая является своего рода стилем RDBMS, но требования к бизнесу заставляют нас это делать.Схема схемы HBase

Допустит, у нас есть студент сущность и субъекты сущности есть один ко многим отображения между учеником и подчиняет

Студенты сущности имеет ниже атрибуты

Имя, школы, Адрес, страны

Субъекты имеют следующие атрибуты

Предметное имя, YearStudied, Описание предмета, прошло/Failed, Оценка

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

что-то вроде гк subjectid, CF: Студент (со студенческими столбцов), CF: Субъект (Subject столбцы

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

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

Я хочу знать, каковы показатели с такой конструкцией.

Может ли кто-нибудь предложить лучшие варианты дизайна - нам придется делать и читать, и записывать как студентам, так и субъектам, и им нужно использовать HBase!

Цените свою помощь заранее.

ответ

0

Ваш дизайн схемы кажется неправильным, если я ошибаюсь?

Как вы узнаете, какой предмет должен быть изменен в случае и обновлен в таблице учеников.

Пусть:

StudKey1: CF1: StdName, CF1: Coln, CF2: SubjectIds, CF2.Coln

Теперь, если вам нужно изменить детали любого конкретного объекта ид сказать Sub_123 для StudKey1, как вы чтобы определить, какой предмет должен быть изменен. Если у вас нет составного ключа в таблице предметов, например StudKey_SubKey. Теперь, если вам нужно добавить еще один предмет к курсу?

Теперь есть несколько решений, которые могут отложить ваш случай использования. Вы можете попробовать что-то вроде:

Есть 3 таблицы

  1. Student Таблица
  2. Тема Таблица
  3. Student_Subject_Match стол

Возникли ключи, как:

  1. Tbale1_Key: StudKey
  2. Table2_key: SubKey
  3. Table3_key: StudKey_SubKey ИЛИ StudKeySubKey (любым способом вы можете сделать нечеткую фильтрацию или фильтрацию регулярных выражений)

Таким образом, вы сможете сохранить всю информацию о Студент, а также Субъект. Если вам необходимо изменить любую информацию о предмете, касающуюся пары «Студент + субъект», вы можете сделать это легко, уволив обновление по этой комбинации идентификаторов ученика id

+0

У нас есть эта часть ключа строки таблицы ключевых предметов, с префиксом ученика , Помимо дизайна, вопрос заключается в том, может ли Hbase обрабатывать такой дизайн - каковы последствия для производительности. – Prahalad

+0

Что касается вопроса Может ли HBase обрабатывать такую ​​конструкцию ДА, она может. В принципе, он может обрабатывать любой дизайн столбцов RowKey, поскольку они являются массивами байтов, внутренне хранящимися как пара ключевых значений. Теперь для производительности зависит от того, будете ли вы делать сканирование на своем столе? Если да, то до тех пор, пока вы не будете использовать проверку CoProcessors, вы будете медленными. Если нет, то независимо от того, какой у вас дизайн, независимо от того, сколько данных у вас есть в таблице. Методы Get и Put будут давать постоянную производительность. –

+0

Можете ли вы объяснить, как CoProcessors можно использовать для предотвращения сканирования? – Prahalad

Смежные вопросы