câu trả lời đúng một phần. Không đúng: hbase STORES ba phiên bản. Bằng chứng xem dưới đây. Đúng: bạn có thể đặt số tiền tối đa của phiên bản mà HBase trả về thông qua
alter 'marketdata', NAME => 'field', VERSIONS => 100
Nhưng bây giờ chúng ta hãy giả định, tôi không thay đổi biến phiên bản.
tôi có mười mục trong HBase tôi, với thời gian từ 0 đến 9. Các dấu thời gian mới nhất là:
hbase(main):025:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask'}
COLUMN CELL
field:ask timestamp=9, value=0.9940174211042572
1 row(s) in 0.0590 seconds
hbase(main):026:0>
Các giá trị từ timestamp 1-5 được hiển thị là:
hbase(main):027:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,5], VERSIONS=>5}
COLUMN CELL
field:ask timestamp=4, value=0.530618878519702
field:ask timestamp=3, value=0.051028316270589014
field:ask timestamp=2, value=0.11949750640509116
3 row(s) in 0.0130 seconds
hbase(main):028:0>
... và khi tôi đặt dấu thời gian kết thúc thành 10, nó vẫn chỉ hiển thị ba phiên bản trước TRƯỚC KHI dấu thời gian và loại bỏ các phiên bản trước:
hbase(main):028:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,10], VERSIONS=>5}
COLUMN CELL
field:ask timestamp=9, value=0.9940174211042572
field:ask timestamp=8, value=0.6941263513176372
field:ask timestamp=7, value=0.1814043435754933
3 row(s) in 0.0400 seconds
hbase(main):029:0>
chờ, vậy làm cách nào bạn có thể thấy phiên bản 4,3,2 và 9,8,7 nếu hbase chỉ lưu trữ 3 phiên bản? Có lẽ vỏ chỉ trở về 3, vì lý do gì đó, nhưng dường như bạn đã 'chứng minh' rằng có nhiều phiên bản hơn. Câu trả lời thực sự cũng phức tạp hơn vì cách mà hbase xóa các phiên bản: nó không thực sự. Nếu bạn xóa dữ liệu một cách rõ ràng, nó sẽ thêm bia mộ và bạn sẽ không thấy bất kỳ dữ liệu nào trước bia mộ. Tất cả các dữ liệu khác sẽ có sẵn (và tất cả dữ liệu sẽ được lưu trữ) cho đến khi nén chặt lớn tiếp theo sẽ ghi đè tệp lưu trữ và chỉ giữ đúng số lượng phiên bản. – David
Xin chào David, bạn đã downvoted dựa trên phản hồi được chỉnh sửa bởi codingFoo. – user1052080
Câu trả lời này vẫn còn một chút sai lệch. Những gì bạn đang thiếu là vấn đề nén chặt. Khi HBase lưu trữ một giá trị, nó chỉ gắn nó vào tệp. Nó không bao giờ xóa dữ liệu.Để thực hiện xóa, chúng gắn thêm một bia mộ về cơ bản nói rằng một giá trị nên được bỏ qua. Bây giờ, khi một sự nén chặt xuất hiện, tệp sẽ được viết lại và không phải phiên bản cũ hoặc phiên bản đã xóa nào sẽ được viết lại vào tệp mới. Vì vậy, có một cửa sổ thời gian khi bạn sẽ có thể xem các phiên bản cũ, nhưng cửa sổ thời gian đó bị giới hạn và bạn không nên dựa vào các phiên bản cũ đang có. – David