Вопрос

Я работаю над проектом с другом, который будет использовать Hbase для хранения своих данных.Есть ли хорошие примеры запросов?Кажется, я пишу тонну Java-кода для перебора списков RowResult, хотя в мире SQL я мог написать простой запрос.Я что-то пропустил?Или в Hbase чего-то не хватает?

Это было полезно?

Решение

Я думаю, что вы, как и многие из нас, совершаете ошибку, рассматривая bigtable и HBase как еще одну СУБД, хотя на самом деле это столбцово-ориентированная модель хранения, предназначенная для эффективного хранения и извлечения больших наборов разреженных данных.В идеале это означает сохранение связей «многие к одному», например, в одной строке.Ваши запросы должны возвращать очень мало строк, но содержать (потенциально) много точек данных.

Возможно, если бы вы рассказали нам больше о том, что вы пытаетесь сохранить, мы могли бы помочь вам спроектировать вашу схему, соответствующую способу ведения дел bigtable/HBase.

Чтобы получить хорошее представление о том, чем HBase отличается от «традиционной» СУБД, прочтите эту замечательную статью: Согласование импеданса:Когда использовать HBase Брайан Даксбери.

Другие советы

Если вы хотите получить доступ к HBase с помощью языка запросов и драйвера JDBC, это возможно.Пол Эмброуз выпустил библиотеку HBQL на сайте hbql.com, которая поможет вам в этом.Я использовал его в нескольких проектах, и он работает хорошо.У вас, очевидно, не будет доступа к полному SQL, но это сделает его немного проще в использовании.

Я посмотрел на Hadoop и Hbase, и как Шон сказал, что вскоре я понял, что это не дало мне того, что я действительно хотел, а именно кластерной базы данных, совместимой с JDBC.

Я думаю, вам было бы лучше использовать что-то вроде C-JDBC или HA-JDBC что больше похоже на то, чего я добивался.(Лично я не продвинулся ни в одном из них, кроме чтения документации, поэтому не могу сказать, какой из них хорош, если таковой имеется.)

Я бы порекомендовал взглянуть на Apache Улей проект, похожий на HBase (в том смысле, что это распределенная база данных), реализующий язык, похожий на SQL.

Спасибо за ответ, Шон, и извините за поздний ответ.Я часто допускаю ошибку, рассматривая HBase как СУБД.Так часто из-за этого мне приходилось переписывать код!Так трудно разучиться.

Сейчас у нас всего 4 стола.Что в данном случае очень мало, учитывая мое прошлое.Я просто надеялся использовать некоторый Функциональность РСУБД в основном придерживается модели хранения, ориентированной на столбцы.

Рад слышать, что вы, ребята, используете HBase!Я не эксперт ни в каком смысле, но вот пара вещей, которые могут помочь.

  • HBase основан на BigTable или вдохновлен им, который AppEngine предоставляет как API своей базы данных, поэтому просматриваю их документы должно очень помочь, если вы работаете над веб-приложением.

  • Если вы не работаете над веб-приложением, итерация, которую вы описываете, обычно выполняется с помощью карты/сокращения (не выдавайте ненужные значения).Пропуск значений с помощью итераторов практически гарантирует, что в вашем приложении будут узкие места с наборами данных размера HBase.Если вы обнаружите, что все еще думаете на SQL, ознакомьтесь с учебным пособием по свиньям и ульям Cloudera.

  • По сути, вся ментальная разница между HBase и SQL (для не-веб-приложений) сводится к следующему: «Отправляйте вычисления в данные, а не отправляйте данные в вычисления» — если вы помните об этом во время кодирования, у меня всё получится :-)

С уважением,

Дэйвид

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top