Подтвердить что ты не робот

Java ORM для Hbase

Кто-нибудь знает хорошую реализацию Java ORM для HBase. Это выглядит очень хорошо для Ruby

http://www.stanford.edu/~sqs/rhino/doc/

Но не удалось найти его для Java.

Спасибо.

4b9b3361

Ответ 1

Недавно появилась новая версия kundera-2.0.4, которая является ORM над Hbase. Он предоставляет множество других вещей, которые очень полезны, например индексирование, перекрестное хранилище данных и т.д.

Я предлагаю попробовать https://github.com/impetus-opensource/Kundera

Исполняемая банка:

https://github.com/impetus-opensource/Kundera

Ответ 2

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

Например, книга, в которой написано столько авторов, в зависимости от ваших шаблонов доступа, авторских прав, реализация кэша на уровне приложения, вы можете захотеть сохранить весь автор в таблице книг (то есть автор находится в таблице 2, таблице авторов и книжный стол) или только идентификатор автора. Более того, сборник может быть сохранен в одну ячейку как XML/JSON или отдельные ячейки для отдельных авторов.

С таким пониманием я заключил, что написание полномасштабной ORM, такой как Hibernate, будет не только очень сложным, но и не может быть окончательным. Поэтому я использовал другой подход, гораздо более похожий на iBatis на Hibernate.

Позвольте мне объяснить, как это работает. Для этого я буду использовать исходные коды из здесь и здесь.

  • Первой и главной задачей является реализация интерфейса ObjectRowConverter, в данном случае SessionDataObjectConverter. Абстрактный класс инкапсулирует основные передовые методы, как обсуждалось и узнано из сообщества HBase. Расширение в основном дает вам 100% -ный контроль над тем, как преобразовать ваш объект в строку HBase и наоборот. Для этого только ограничение API заключается в том, что ваши объекты домена должны реализовывать интерфейс PersistentDTO, который используется внутри для создания Put, Delete, do byte [] для объекта id и наоборот.
  • Следующая задача - связать зависимости, как это сделано в HBaseImplModule. Пожалуйста, дайте мне знать, если вы заинтересованы, я буду проходить инъекции зависимостей.

И вот оно. Как они используются, доступны здесь. Он в основном использует CommonReadDao, CommonWriteDao для чтения и записи данных в HBase и обратно. Общее чтение dao реализует многопоточное преобразование строк в объект по запросам, многопоточный get by ids, get by id и имеет свои критерии Hibernate, такие как API, для запроса к HBase через Scan (нет доступных функций агрегации). Common write dao реализует общий код, связанный с записью, с некоторыми добавленными возможностями, такими как оптимистичная/пессимистическая блокировка, привязка к ячейке/свертывание сущности (non) -existence при сохранении, обновлении, удалении и т.д.

Этот ORM был разработан для нашей внутренней цели, и я был до шеи и, следовательно, пока не могу выполнить некоторую документацию. Но если вы заинтересованы, дайте мне знать, и я сделаю время для документации с приоритетом.

Ответ 4

Как насчет datanucleus: вы можете использовать JPA или JDO в качестве вашего API и hbase в качестве внутреннего хранилища: http://www.datanucleus.org/plugins/store.hbase.html

Ответ 6

Существует pigi и parhely и я не использовал ни одного из них. IMO HBase - это быстрый механизм хранения ключей/значений, но если вам нужен еще один слой абстракций, вы должны проверить их.

Ответ 7

Мы используем HBase ORM - Surus https://github.com/mushkevych/surus/wiki

Возможно, стоит упомянуть

  • мы используем его с помощью карты Hadoop/уменьшения
  • у него есть дополнительный модуль, который позволяет вам накачивать данные HBase из потока JSON (в нашем случае он исходит из кода Python)