RocksDB ist ein eingebettbarer , anhaltender Schlüsselwertgeschäft.
Die folgende Einführung stammt von der chinesischen offiziellen Rocksdb -Website
https://rocksdb.org.cn/
Es hat die folgenden vier Eigenschaften
1 hohe Leistung: RocksDB verwendet eine Reihe von Log -Struktur -Datenbankmotoren. Für eine bessere Leistung ist dieser Motor in C ++ geschrieben. Schlüssel und Wert sind Byte -Streams jeder Größe.
2 Optimiert für schnelle Speicher: RocksDB ist speziell für schnelle und ladenschaften Speichergeräte (z. B. Flash-Speicher oder Hochgeschwindigkeitsfestscheibe) optimiert. RocksDB maximiert die hochrate Lese- und Schreibleistung von Flash-Speicher und RAM.
3Adapability: RocksDB ist für viele verschiedene Arten von Workloads geeignet. Von Datenspeichermotoren wie MyRocks bis hin zu Anwendungsdaten -Zwischenspeichern und sogar einigen eingebetteten Workloads kann RocksDB diesen verschiedenen Datenbelastungsanforderungen ruhig konfrontiert.
4 Basic und Advanced Database Operations RocksDB bietet einige grundlegende Vorgänge, z. B. das Öffnen und Schließen der Datenbank. Lesen- und Schreibunterstützung wird auch für fortgeschrittene Operationen wie Verschmelzungs- und Komprimierungsfilterung bereitgestellt.
Rockdb -Installation und Verwendung
Es gibt verschiedene Möglichkeiten, RocksDB zu installieren. Da der Beamte keine binäre Bibliothek für die entsprechende Plattform bereitstellt, muss er von selbst zusammengestellt und verwendet werden.
Die RocksDB -Installation ist sehr einfach, aber Sie müssen Ihre Sicht auf RocksDB ändern. Es handelt sich nicht um eine Schwergewichtsdatenbank, sondern ein eingebetteter Schlüsselwert. Dies bedeutet, dass Sie es selbst in der Entwicklungsumgebung ausprobieren können, indem Sie Ihrem Maven -Projekt einfach RocksDB -Abhängigkeiten hinzufügen. Wenn Sie dies nicht verstehen, können Sie die folgenden zwei nicht empfohlenen Installationsmethoden wenden.
Sobald Sie die offizielle Website von RocksDB überprüfen, werden Sie feststellen, dass Sie ein C ++ - Programm schreiben müssen (nicht empfohlen).
#include <Assert> #include "Rocksdb/db.h" Rocksdb :: db* db; Rocksdb :: Optionen; Optionen.create_if_missing = true; Rocksdb :: Status Status = Rocksdb :: Db :: Open (Optionen "/tmp/testdb";
Eine Datenbank erstellen? ? ? ? Warum unterscheidet es sich von der MySQL oder dem Mongo, die Sie zuvor verwendet haben? Warum gibt es kein Skript wie Start.sh oder Start.bat? Soll ich schreiben? Nach dem Schreiben stellte ich fest, dass ich nicht wusste, wie ich es mit der RocksDB -Bibliothek in Verbindung bringen sollte. Was zu tun? Ich habe C ++ vergessen.
Methode 2 verwendet PyrocksDB (nicht empfohlen)
http://pyrocksdb.readthedocs.io/en/latest/installation.html
Ausführliche Installationsdokumente finden Sie in den offiziellen Installationsdokumenten von Pyrocksdb.
Die beiden oben genannten Methoden sind für Entwickler, die mit C ++ oder Python vertraut sind, freundlicher, aber nicht sehr freundlich gegenüber Java -Entwicklern.
Lassen Sie uns als nächstes die dritte Methode vorstellen.
Methode 3 Verwenden Sie Maven (empfohlen)
Erstellen Sie ein neues Maven -Projekt und ändern Sie die Abhängigkeit von pom.xml, um es hinzuzufügen
<Depopenty> <gruppe> org.rocksdb </Groupid> <artifactId> Rocksdbjni </artifactId> <version> 5.8.6 </Version> </abhängig>
Sie können die Version auswählen, die Ihnen gefällt.
Dann ist das Sprachniveau von Maven höher und ich habe es hier weltweit auf 1,8 gesetzt
<Profies> <Profile> <ID> JDK18 </id> <ActiveByDefault> true </activeByDefault> <jdk> 1.8 </jdk> </activation> <Porpies> <maven.compiler.source> 1.8 </maven.comPiler.Source> <maven.compiler.target> 1.8 </maven.compiler.target> <maven.compiler.comPilerversion> 1.8 </maven.compiler.comPilerversion> </properties> </profile> </profiles>
Zu diesem Zeitpunkt ist die Umgebung bereit. Sind Sie in die vertraute Java -Welt zurückgekehrt?
Ändern Sie dann die laufende Konfiguration in der IDE, fügen Sie dem Datenbankspeicherpfad ein Programm hinzu und führen Sie dann den Test aus. Ich werde diese Klasse am Ende des Artikels geben.
Beim Ausführen der Konsole wird eine Protokollausgabe stattfinden, und in der Datei wird auch eine neue Datei angezeigt.
Wir werden später mehr über die Rockdb Development API und ihre Produktionsanwendungen auf dem Laufenden halten. Ich hoffe, jeder wird darauf achten.
// Copyright (C) 2011-Present, Facebook, Inc. Alle Rechte vorbehalten.// Dieser Quellcode ist sowohl unter der GPLV2 (gefunden in der // Kopierdatei im Stammverzeichnis) als auch unter Apache 2.0 Lizenz // (gefunden in der lizenz. Java.util.ArrayList; Import Java.util.Arrays; Import Java.util.List; Import Java.util.Map; öffentliche Klasse Rocksdbsample {static {Rocksdb.loadlibrary (); } public static void main (endgültige String [] args) {if (args.length <1) {System.out.println ("Verwendung: RocksDbSample db_path"); System.exit (-1); } Finale String db_path = args [0]; endgültige Zeichenfolge db_path_not_found = db_path + "_not_found"; System.out.println ("RockSdbsample"); try (final Options options = new Options(); final Filter bloomFilter = new BloomFilter(10); final ReadOptions readOptions = new ReadOptions() .setFillCache(false); final Statistics stats = new Statistics(); final RateLimiter rateLimiter = new RateLimiter(100000000,10000, 10)) { try (final RocksDB db = RocksDB.open(options, db_path_not_found)) {assert (false); } catch (endgültige RocksdBexception e) {System.out.Format ("Die erwartete Ausnahme erfasst - %s/n", e); } try {options.setcreateifmiss (true) .setStatistics (Statistiken) .SetwriteBufferSize (8 * sizeUnit.kb) .setMaxwritBuffernumber (3) .SetMaxbackgroundCompaction (10) .setCompressiontype (CompressionType.sNAppy_Compaction). } catch (endgültig illegalArgumentException e) {assert (false); } assert (options.createifmiss () == true); Assert (options.writeBufferSize () == 8 * sizeUnit.kb); Assert (options.MaxWriteBuffernumber () == 3); Assert (Optionen.MaxbackgroundCompactions () == 10); ASSERT (options.compressionType () == compressiontype.snappy_Compression); ASSERT (options.comPactionStyle () == CompactionStyle.universal); Assert (options.MemtableFactoryName (). Equals ("SkiplistFactory")); options.setMemtableConfig (neuer HashskiplistMemtableConfig () .Seteight (4) .SetbranchingFactor (4) .SetBucketCount (2000000)); Assert (options.MemTableFactoryName (). Equals ("HashskiplistristRectory")); Optionen.SetMemTableConfig (New HashlinkedListMemTableConfig () .SetBucketCount (100000)); Assert (options Optionen.SetMemTableConfig (New VectorMtableConfig (). SetReservedSize (10000)); Assert (options.MemTableFactoryName (). Equals ("VectorRepFactory")); options.setMemtableConfig (New SkiplistMemTableConfig ()); Assert (options.MemtableFactoryName (). Equals ("SkiplistFactory")); options.settableFormatConfig (New ClaintableConfig ()); // Plain-table erfordert MMAP-Leseoptionen. ASSERT (options.TableFactoryName (). Equals ("klagelbar"); Optionen.SetRatelimiter (Ratelimiter); endgültige blockbasedTableConfig table_options = new BlockbasedTableConfig (); table_options.setblockCachesize (64 * sizeUnit.kb) .setFilter (Bloomfilter) .setCachenumShardbits (6) .SetblockSizedEviation (5) .SetBlockRestartInterval (10) .SetCacheIndexandFilterblocks (truedsethashIndeIntEldEdsDeDeDeDeDeDeDeTeDeDeDeDeDeDeTeDeDeDeDeTexision). SizeUnit.kb) .setBlockCacheCompressedNumShardbits (10); Assert (table_options.blockCacheSize () == 64 * sizeUnit.kb); Assert (table_options.cachenumShardbits () == 6); Assert (table_options.blockSizedEviation () == 5); Assert (table_options.blockRestartInterval () == 10); Assert (table_options.cacheIndexandFilterBlocks () == true); Assert (table_options.hashIndexallowcollision () == false); Assert (table_options.blockCacheCompressesSize () == 64 * sizeUnit.kb); Assert (table_options.blockCacheCompressedNumShardbits () == 10); options.settableFormatConfig (table_options); Assert (options.TableFactoryName (). Equals ("blockbasiertes")); try (final rocksdb db = rocksdb.open (Optionen, db_path)) {db.put ("Hallo" .GetByTes (), "World" .GetByTes ()); endgültig byte [] value = db.get ("Hallo" .GetByTes ()); Assert ("Welt" .Equals (neuer String (Wert))); endgültig String str = db.getProperty ("Rocksdb.Stats"); Assert (str! = null &&! str.equals ("")); } catch (endgültige RocksDBexception e) {System.out.format ("[Fehler] die unerwartete Ausnahme erfasst - %s/n", e); assert (falsch); } try (endgültig Rocksdb db = Rocksdb.open (Optionen, db_path)) {db.put ("Hallo" .GetByTes (), "World" .GetByTes ()); byte [] value = db.get ("hello" .getBytes ()); System.out.Format ("get ('hello') = %s/n", neuer String (Wert)); für (int i = 1; i <= 9; ++ i) {für (int j = 1; j <= 9; ++ j) {db.put (string.format ("%dx%d", i, j) .getBytes (), string.format ("%d", i * j) .getBytes ()); }} für (int i = 1; i <= 9; ++ i) {für (int j = 1; j <= 9; ++ j) {System.out.Format ("%s", New String (db.get (String.Format ("%dx%d", i, j) .getBytes ())); } System.out.println (""); } // Batch -Test schreiben (endgültige Schreibungen writeOpt = new Wecoptions ()) {für (int i = 10; i <= 19; ++ i) {try (Final WriteBatch batch = new WriteBatch ()) {für (int j = 10; J <= 19; ++ j) {batch.put (string.format ("%dx%d", i, ","%dx%d ", i,", "," ig. String.Format ("%d", i * J) .GetByTes ()); } db.write (writeOpt, batch); }}} für (int i = 10; i <= 19; ++ i) {für (int j = 10; j <= 19; ++ j) {assert (new String (db.get (string.format ("%dx%d", i, j) .getBytes ()). Equals (String.format ("%d", i * j)); System.out.Format ("%s", neuer String (db.get (string.format ("%dx%d", i, j) .getBytes ())); } System.out.println (""); } value = db.get ("1x1" .getBytes ()); Assert (Wert! = NULL); value = db.get ("welt" .getBytes ()); Assert (value == null); value = db.get (ReadOptions, "World" .GetByTes ()); Assert (value == null); Final Byte [] testKey = "Asdf" .GetByTes (); Final Byte [] testValue = "Asdfghjkl; (Arrays.Equals (Testvalue, TestResult)); String (testResult)); == RocksDB.NOT_FOUND); Assert (len == RocksDB.NOT_FOUND); writeOpts = new Wrecesoptions ()) {wecteopts.setSync (true); len)); System.out.println ("fehlgeschlagen in Call to GetTickerCount ()"); stats.gethistogramdata (Histogrammype); DB.Newiterator ()) {boolean suchtofirst = false; if (Seektofirstpassed) {System.out.println ("Iterator Searchtofirst Tests"); (Iterator.Value ()! = NULL); (iterator.Value ()! = null); iterator.isvalid (); null);Das obige ist der gesamte Inhalt der RocksDB -Installation und -Anwendung in Java, die Ihnen dieses Mal vorgestellt wurde. Wenn Sie nach dem Lernen immer noch nichts verstehen, können Sie es im Nachrichtenbereich unten besprechen. Vielen Dank für Ihre Unterstützung für Wulin.com.