HBase intra row scanning
By Lars Hofhansl Updated (again) Wednesday, January 25th, 2012. As I painfully worked through HBASE-5229 I realized that HBase already has all the building blocks needed for complex (local) transactions. What's important here is that (see
By Lars HofhanslUpdated (again) Wednesday, January 25th, 2012.
As I painfully worked through HBASE-5229 I realized that HBase already has all the building blocks needed for complex (local) transactions.
What's important here is that (see my introduction to HBase):
- HBase ensures atomicity for operations for the same row key
- HBase keys have internal structure: (row-key, column family, column, ...)
// all columns whose identifier starts with "abc"
Filter f = new ColumnRangeFilter(Bytes.toBytes("abc"), true,
Bytes.toBytes("abd"), false);
// all columns whose identifier sorts after "test"
Filter f = new ColumnRangeFilter(Bytes.toBytes("test"), true,
null, true);
So this allows to search (scan) inside a row by column identifier just as HBase allows searching by row key.
A client application can exploit this to achieve transactions by grouping all entities that can participate in the same transaction into a single row (and single column family).
Then using prefixes of the column identifiers can be used to define rows inside that group. Basically the search criteria for keys was moved one level down to the column identifier.
Say we wanted to implement a store with transactional tables that contain rows and columns. One way to doing this with HBase as follows:
- the HBase row-key/column-family maps to a "table"
- a prefix of the HBase column identifier maps to a "row"
- the rest of the HBase column identifier identifies the "column"
This leads to potentially wide HBase rows with many columns. The missing piece is allowing a Scan to efficiently retrieve a slice of a wide row.
This where ColumnRangeFilter comes into play. This filter seeks efficiently into the row by seeking ahead to the first HBase block that contains the first KeyValue (or cell) for that column.
Let's model a table "pets" this way. And let's say a pet has a name and a species. The HBase key for entries would look like this:
(table, CF1, rowA|column1) -> value for column1 in rowA
The code would look something like this:
(apologies for the initial incorrect code that I had posted here)
HTable t = ...;
Scan s = ...;
s.setStartRow("pets");
s.setStopRow("pets");
// get all columns for my pet "fluffy".
Filter f = new ColumnRangeFilter(Bytes.toBytes("fluffy"), true,
Bytes.toBytes("fluffz"), false);
s.setFilter(f);
s.setBatch(20); // avoid getting all columns for the HBase row
ResultScanner rs = t.getScanner(s);
for (Result r = rs.next(); r != null; r = rs.next()) {
// r will now have all HBase columns that start with "fluffy",
// which would represent a single rowfor (KeyValue kv : r.raw()) {
// each kv represent - the latest version of - a column
}
}
The downside of this is that HBase achieves atomicity by collocating all cells with the same row-key, so it has to be hosted by a single region server.
原文地址:HBase intra row scanning, 感谢原作者分享。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dengan kemunculan era data besar, pemprosesan dan penyimpanan data menjadi semakin penting, dan cara mengurus dan menganalisis sejumlah besar data dengan cekap telah menjadi cabaran bagi perusahaan. Hadoop dan HBase, dua projek Yayasan Apache, menyediakan penyelesaian untuk penyimpanan dan analisis data besar. Artikel ini akan memperkenalkan cara menggunakan Hadoop dan HBase dalam Beego untuk storan dan pertanyaan data besar. 1. Pengenalan kepada Hadoop dan HBase Hadoop ialah sistem storan dan pengkomputeran teragih sumber terbuka yang boleh

Ketergantungan: org.springframework.dataspring-data-hadoop-hbase2.5.0.RELEASEorg.apache.hbasehbase-client1.1.2org.springframework.dataspring-data-hadoop2.5.0.RELEASE Cara rasmi untuk menambah konfigurasi adalah melalui xml, iaitu mudah Selepas menulis semula, ia adalah seperti berikut: @ConfigurationpublicclassHBaseConfiguration{@Value("${hbase.zooke

Dengan kemunculan era data besar, penyimpanan dan pemprosesan data besar-besaran telah menjadi sangat penting. Dari segi pangkalan data NoSQL, HBase kini merupakan penyelesaian yang digunakan secara meluas. Sebagai bahasa pengaturcaraan yang ditaip kuat secara statik, bahasa Go semakin digunakan dalam bidang seperti pengkomputeran awan, pembangunan tapak web dan sains data kerana sintaksnya yang mudah dan prestasi cemerlang. Artikel ini akan memperkenalkan cara menggunakan HBase dalam bahasa Go untuk melaksanakan aplikasi pangkalan data NoSQL yang cekap. Pengenalan HBase HBase adalah asas yang sangat berskala, sangat boleh dipercayai

Cara menggunakan Java untuk membangunkan aplikasi pangkalan data NoSQL berdasarkan HBase Pengenalan: Dengan kemunculan era data besar, pangkalan data NoSQL telah menjadi salah satu alat penting untuk memproses data besar-besaran. HBase, sebagai sistem pangkalan data NoSQL teragih sumber terbuka, mempunyai aplikasi yang luas dalam bidang data besar. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan aplikasi pangkalan data NoSQL berdasarkan HBase dan menyediakan contoh kod khusus. 1. Pengenalan kepada HBase: HBase ialah sistem pengedaran berdasarkan Hadoop.

Menggunakan HBase untuk penyimpanan data dan pertanyaan dalam rangka kerja Beego Dengan perkembangan berterusan era Internet, penyimpanan data dan pertanyaan menjadi semakin kritikal. Dengan kemunculan era data besar, pelbagai sumber data menduduki kedudukan penting dalam bidang masing-masing Pangkalan data bukan hubungan adalah pangkalan data dengan kelebihan yang jelas dalam penyimpanan dan pertanyaan data, dan HBase ialah pangkalan data bukan hubungan yang diedarkan berdasarkan Hadoop. Pangkalan data perhubungan. Artikel ini akan memperkenalkan cara menggunakan HBase untuk penyimpanan data dan pertanyaan dalam rangka kerja Beego. 1. H

Dengan pertumbuhan berterusan aplikasi Internet dan volum data, pangkalan data hubungan tradisional tidak lagi dapat memenuhi keperluan menyimpan dan memproses data besar-besaran. Sebagai sistem pengurusan pangkalan data jenis baharu, NoSQL (NotOnlySQL) mempunyai kelebihan ketara dalam penyimpanan dan pemprosesan data secara besar-besaran, dan telah menerima lebih banyak perhatian dan aplikasi. Antara pangkalan data NoSQL, ApacheHBase ialah pangkalan data teragih sumber terbuka yang sangat popular Ia direka berdasarkan idea BigTable Google dan mempunyai

Workerman ialah rangka kerja PHPsocket berprestasi tinggi yang boleh mengehoskan sejumlah besar sambungan serentak. Tidak seperti rangka kerja PHP tradisional, Workerman tidak bergantung pada pelayan web seperti Apache atau Nginx Sebaliknya, ia menjalankan keseluruhan aplikasi dengan sendirinya dengan memulakan proses PHP. Pekerja mempunyai kecekapan operasi yang sangat tinggi dan kapasiti beban yang lebih baik. Pada masa yang sama, HBase ialah sistem pangkalan data NoSQL teragih yang digunakan secara meluas dalam data besar

HBase ialah sistem storan teragih berasaskan Hadoop yang direka untuk menyimpan dan memproses data berstruktur berskala besar. Untuk mengoptimumkan prestasi baca dan tulisnya, HBase menyediakan pelbagai mekanisme caching, yang boleh meningkatkan kecekapan pertanyaan dan mengurangkan kelewatan baca dan tulis melalui konfigurasi yang munasabah. Artikel ini akan memperkenalkan teknologi caching HBase dan cara mengkonfigurasinya. Jenis cache HBase HBase menyediakan dua mekanisme cache asas: cache blok (BlockCache) dan cache MemStore (juga dipanggil cache tulis). Cache blok sudah masuk
