2010-07-15 33 views
22

Bất kỳ ai cũng biết thực hiện ORM Java tốt cho HBase. Cái này trông thật sự tốt đẹp cho RubyJava ORM cho HBase

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

Nhưng không thể tìm thấy một cho Java.

Cảm ơn.

+10

Tại sao câu hỏi này bị đóng !!!!!? đó là một câu hỏi rất hay với 3390 lượt xem! Người kiểm duyệt SOF làm gì? – Heidarzadeh

+4

Đây là một câu hỏi rất quan trọng, tại sao nó được coi là không mang tính xây dựng? – nitefrog

+0

Đây vẫn là câu hỏi có liên quan. Hầu hết các câu trả lời cho câu hỏi này trỏ đến các dự án đã lỗi thời hoặc không tồn tại. Tôi khuyên bạn nên sử dụng một trong hai cách sau: [1] Apache Phoenix + Hibernate [2] https://flipkart-incubator.github.io/hbase-object-mapper/ (tiết lộ: Tôi là tác giả của dự án này) –

Trả lời

2

pigiparhely và tôi đã không sử dụng số nào trong số chúng. IMO HBase là công cụ lưu trữ khóa/giá trị nhanh, nhưng nếu bạn cần một lớp trừu tượng khác, bạn nên kiểm tra chúng.

+0

Cảm ơn bạn . đôi khi dường như không có tài liệu nên tôi chọn sử dụng pigi trước. –

4

Sức mạnh của HBase như tôi thấy nó đang giữ các cột động trong các nhóm cột tĩnh. Từ kinh nghiệm của tôi phát triển các ứng dụng với HBase tôi thấy rằng nó không phải là dễ dàng như SQL để xác định vòng loại và giá trị di động. Ví dụ, một cuốn sách với nhiều tác giả, tùy thuộc vào mẫu truy cập của bạn, chỉnh sửa tác giả, triển khai bộ nhớ cache lớp ứng dụng bạn có thể chọn để lưu toàn bộ tác giả trong bảng sách (đó là tác giả nằm trong 2 bảng, tác giả bảng và bảng sách) hoặc chỉ là id tác giả. Hơn nữa, bộ sưu tập tác giả có thể được lưu vào một ô dưới dạng XML/JSON hoặc các ô riêng lẻ cho từng tác giả.

Với sự hiểu biết này, tôi kết luận viết một ORM toàn diện như Hibernate sẽ không chỉ rất khó có thể không thực sự là kết luận. Vì vậy, tôi đã có một cách tiếp cận khác, giống như iBatis là Hibernate.

Hãy để tôi giải thích cách hoạt động của nó. Đối với điều này, tôi sẽ sử dụng mã nguồn từ herehere.

  1. Nhiệm vụ đầu tiên và quan trọng nhất là triển khai giao diện ObjectRowConverter, trong trường hợp này là SessionDataObjectConverter. Lớp trừu tượng bao gồm các thực hành cơ bản tốt nhất như được thảo luận và học hỏi từ cộng đồng HBase. Phần mở rộng về cơ bản cung cấp cho bạn 100% quyền kiểm soát cách chuyển đối tượng của bạn sang hàng HBase và ngược lại. Đối với hạn chế duy nhất này từ API là đối tượng miền của bạn phải triển khai giao diện PersistentDTO được sử dụng nội bộ để tạo ra Đặt, Xóa, làm byte [] thành đối tượng id và ngược lại.
  2. Nhiệm vụ tiếp theo là nối các phụ thuộc như được thực hiện trong HBaseImplModule. Xin vui lòng cho tôi biết nếu bạn quan tâm tôi sẽ đi qua tiêm phụ thuộc.

Và như vậy. Cách chúng được sử dụng có sẵn here. Về cơ bản nó sử dụng CommonReadDao, CommonWriteDao để đọc và ghi dữ liệu đến và từ HBase. Dao đọc phổ biến thực hiện hàng đa luồng để chuyển đổi đối tượng trên truy vấn, đa luồng nhận được theo id, nhận theo id và có tiêu chí Hibernate như API để truy vấn HBase qua Scan (không có chức năng tổng hợp). Common write dao thực hiện phổ biến viết mã liên quan với một số tiện nghi bổ sung, chẳng hạn như lạc quan/bi quan khóa, tế bào ghi đè/hợp nhất kiểm tra thực thể (không) tồn tại trên lưu, cập nhật, xóa, vv

ORM này đã được phát triển cho chúng tôi mục đích nội bộ và tôi đã được tối đa cổ của tôi và do đó không thể làm một số tài liệu hướng dẫn.Nhưng nếu bạn quan tâm, hãy cho tôi biết và tôi sẽ dành thời gian cho tài liệu có mức độ ưu tiên.

2

Chúng tôi đang sử dụng HBase ORM - Surus https://github.com/mushkevych/surus/wiki

Có lẽ đáng nói

  • chúng tôi đang sử dụng nó rất nhiều với bản đồ Hadoop/reduce
  • nó có thêm mô-đun cho phép bạn bơm vào dữ liệu HBase từ luồng JSON (trong trường hợp của chúng tôi nó đến từ mã Python)
Các vấn đề liên quan