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, 感谢原作者分享。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit dem Aufkommen des Big-Data-Zeitalters sind Datenverarbeitung und -speicherung immer wichtiger geworden und die effiziente Verwaltung und Analyse großer Datenmengen ist für Unternehmen zu einer Herausforderung geworden. Hadoop und HBase, zwei Projekte der Apache Foundation, bieten eine Lösung für die Speicherung und Analyse großer Datenmengen. In diesem Artikel wird erläutert, wie Sie Hadoop und HBase in Beego für die Speicherung und Abfrage großer Datenmengen verwenden. 1. Einführung in Hadoop und HBase Hadoop ist ein verteiltes Open-Source-Speicher- und Computersystem, das dies kann

Abhängigkeit: org.springframework.dataspring-data-hadoop-hbase2.5.0.RELEASEorg.apache.hbasehbase-client1.1.2org.springframework.dataspring-data-hadoop2.5.0.RELEASE Der offizielle Weg zum Hinzufügen von Konfigurationen erfolgt über XML einfach Nach dem Umschreiben lautet es wie folgt: @ConfigurationpublicclassHBaseConfiguration{@Value("${hbase.zooke

So verwenden Sie Java zum Entwickeln einer NoSQL-Datenbankanwendung auf Basis von HBase. Einführung: Mit dem Aufkommen des Big-Data-Zeitalters ist die NoSQL-Datenbank zu einem wichtigen Werkzeug für die Verarbeitung großer Datenmengen geworden. HBase verfügt als verteiltes Open-Source-NoSQL-Datenbanksystem über umfangreiche Anwendungen im Bereich Big Data. In diesem Artikel wird erläutert, wie Sie mit Java NoSQL-Datenbankanwendungen auf Basis von HBase entwickeln, und es werden spezifische Codebeispiele bereitgestellt. 1. Einführung in HBase: HBase ist ein auf Hadoop basierendes Verteilungssystem.

Mit dem Aufkommen des Big-Data-Zeitalters ist die Speicherung und Verarbeitung großer Datenmengen besonders wichtig geworden. Im Hinblick auf NoSQL-Datenbanken ist HBase derzeit eine weit verbreitete Lösung. Als statisch stark typisierte Programmiersprache wird die Go-Sprache aufgrund ihrer einfachen Syntax und hervorragenden Leistung zunehmend in Bereichen wie Cloud Computing, Website-Entwicklung und Datenwissenschaft eingesetzt. In diesem Artikel wird erläutert, wie Sie HBase in der Go-Sprache verwenden, um effiziente NoSQL-Datenbankanwendungen zu implementieren. HBase-Einführung HBase ist eine hoch skalierbare, äußerst zuverlässige Basisversion

Angesichts des kontinuierlichen Wachstums von Internetanwendungen und Datenmengen können herkömmliche relationale Datenbanken den Anforderungen der Speicherung und Verarbeitung großer Datenmengen nicht mehr gerecht werden. Als neuartiges Datenbankverwaltungssystem bietet NoSQL (NotOnlySQL) erhebliche Vorteile bei der Speicherung und Verarbeitung massiver Daten und erhält immer mehr Aufmerksamkeit und Anwendungen. Unter den NoSQL-Datenbanken ist ApacheHBase eine sehr beliebte verteilte Open-Source-Datenbank. Sie basiert auf der BigTable-Idee von Google

Verwendung von HBase zur Datenspeicherung und -abfrage im Beego-Framework Mit der kontinuierlichen Entwicklung des Internetzeitalters sind Datenspeicherung und -abfrage immer wichtiger geworden. Mit dem Aufkommen des Big-Data-Zeitalters nehmen verschiedene Datenquellen in ihren jeweiligen Bereichen eine wichtige Position ein. Nicht-relationale Datenbanken sind Datenbanken mit offensichtlichen Vorteilen bei der Datenspeicherung und -abfrage, und HBase ist eine verteilte, nicht-relationale Datenbank, die auf Hadoop basiert. Relationale Datenbank. In diesem Artikel wird erläutert, wie Sie HBase zur Datenspeicherung und -abfrage im Beego-Framework verwenden. 1. H

Workerman ist ein leistungsstarkes PHPsocket-Framework, das eine große Anzahl gleichzeitiger Verbindungen hosten kann. Im Gegensatz zu herkömmlichen PHP-Frameworks ist Workerman nicht auf Webserver wie Apache oder Nginx angewiesen, sondern führt die gesamte Anwendung selbst aus, indem es einen PHP-Prozess startet. Workerman verfügt über eine extrem hohe Betriebseffizienz und eine bessere Tragfähigkeit. Gleichzeitig ist HBase ein verteiltes NoSQL-Datenbanksystem, das in Big Data weit verbreitet ist

HBase ist ein Hadoop-basiertes verteiltes Speichersystem zum Speichern und Verarbeiten großer strukturierter Daten. Um die Lese- und Schreibleistung zu optimieren, bietet HBase verschiedene Caching-Mechanismen, die durch eine angemessene Konfiguration die Abfrageeffizienz verbessern und Lese- und Schreibverzögerungen reduzieren können. In diesem Artikel werden die HBase-Caching-Technologie und deren Konfiguration vorgestellt. HBase-Cache-Typen HBase bietet zwei grundlegende Cache-Mechanismen: Block-Cache (BlockCache) und MemStore-Cache (auch Schreib-Cache genannt). Der Blockcache ist vorhanden
