Rocksdb-это встроенный , постоянный магазин ключей.
Следующее введение происходит с официального сайта RockSDB Китая
https://rocksdb.org.cn/
У него есть следующие четыре характеристики
1 Высокая производительность: RockSDB использует набор двигателей базы данных структуры журнала. Для лучшей производительности этот двигатель написан в C ++. Ключ и значение - это байтовые потоки любого размера.
2 Оптимизирован для быстрого хранения: RockSDB специально оптимизирован для быстрой и низкой задержки хранения (таких как флэш-память или высокоскоростной жесткий диск). RocksDB будет максимизировать высококачественные показатели чтения и записи флэш-памяти и оперативной памяти.
3 -й адаптация: RockSDB подходит для многих различных типов рабочих нагрузок. От двигателей хранения данных, таких как Myrocks, до кэширования данных приложений и даже некоторых встроенных рабочих нагрузок, RockSDB может спокойно удовлетворить эти различные потребности в рабочей нагрузке данных.
4 Основные и расширенные операции базы данных RockSDB предоставляют некоторые основные операции, такие как открытие и закрытие базы данных. Поддержка чтения и записи также предоставляется для передовых операций, таких как слияние и фильтрация сжатия.
Установка и использование RockDB
Есть несколько способов установить RockSDB. Поскольку чиновник не предоставляет двоичную библиотеку для соответствующей платформы, его необходимо собирать и использовать само по себе.
Установка RockSDB очень проста, но вам нужно изменить свой вид на RockSDB. Это не тяжелая база данных, это встроенный магазин клавиш. Это означает, что вы можете попробовать это самостоятельно в среде разработки, просто добавив зависимости RockSDB в свой проект Maven. Если вы этого не понимаете, вы можете перейти к следующим двум незаконным методам установки.
После проверки официального веб -сайта RocksDB вы обнаружите, что вам нужно написать программу C ++ (не рекомендуется)
#include <sasert> #include "Rocksdb/db.h" Rocksdb :: db* db; rocksdb :: options; опции опций;
Создать базу данных? ? ? ? Почему он отличается от MySQL или Mongo, который вы использовали раньше? Почему нет сценария, как start.sh или start.bat? Вы хотите, чтобы я написал? После написания я обнаружил, что не знал, как связать его с библиотекой RocksDB. Что делать? Я забыл о C ++.
Метод 2 использует Pyrocksdb (не рекомендуется)
http://pyrocksdb.readthedocs.io/en/latest/installation.html
Для получения подробных установленных документов, пожалуйста, обратитесь к официальным документам по установке веб -сайта Pyrocksdb.
Два выше, два метода более дружелюбны для разработчиков, которые знакомы с C ++ или Python, но не очень дружелюбны к разработчикам Java.
Далее, давайте представим третий метод.
Метод 3 Используйте Maven (рекомендуется)
Создайте новый проект Maven и измените зависимость pom.xml, чтобы добавить его
<Depective> <groupid> org.rocksdb </GroupId> <artifactId> RocksDbjni </artifactId> <sersive> 5.8.6 </version> </dependency>
Вы можете выбрать такую версию, которая вам нравится.
Затем язык Maven выше, и я установил его глобально на 1,8 здесь.
<Профили> <FORLITE> <ID> JDK18 </id> <compatation> <ActiveByDefault> true </activeBydefault> <jdk> 1.8 </jdk> </activemation> <properties> <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>
На данный момент окружающая среда готова. Вы вернулись в знакомый мир Java?
Затем измените запущенную конфигурацию в IDE, добавьте программу в путь хранения базы данных, а затем запустите тест. Я дам этот класс в конце статьи.
При запуске консоли будет появляться вывод журнала, а в файле также появится новый файл.
Позже мы расскажем о API разработки RockDB и его приложениях в производстве. Я надеюсь, что все будут обращать на это внимание.
// Copyright (c) 2011-Present, Facebook, Inc. Все права защищены .// Этот исходный код лицензирован как в соответствии с GPLV2 (найдено в // копировальном файле в корневом каталоге) и Apache 2.0 License // (найдено в файле лицензии. java.util.arraylist; import java.util.arrays; import java.util.list; import java.util.map; public class rocksdbsample {static {rocksdb.loadlibrary (); } public static void main (final String [] args) {if (args.length <1) {System.out.println ("Использование: RocksDbsample db_path"); System.Exit (-1); } окончательная строка db_path = args [0]; Окончательная строка 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); конечная статистика статистики = new Statistics (); окончательный ratelimiter ratelImit db_path_not_found)) {assert (false); } catch (final RocksDBexception e) {System.out.format ("Поймал ожидаемое исключение - %s/n", e); } try {options.setCreateIfmissing (true) .setStatistics (stats) .setWriteBuffersize (8 * sizeUnit.kb) .setMaxWriteBufferNumber (3) .setMaxbackgroundCompactions (10) .setCompressionType (compressionType.nappion_compression) .SetCActionStyle (compressionType.nappy_compression) .setCompressyLyle } catch (final allogalargumentException e) {assert (false); } assert (options.createifmissing () == true); assert (options.writebuffersize () == 8 * siveunit.kb); assert (options.maxwritebuffernumber () == 3); assert (options.maxbackgroundcompactions () == 10); assert (options.compressiontype () == compressiontype.snappy_compression); assert (options.compactionStyle () == compactionStyle.universal); assert (options.memtablefactoryname (). equals ("skiplistfactory")); Options.setMemtableConfig (new HashskiplistmemtableConfig () .setheight (4) .SetBranchingFactor (4) .SetBucketCount (2000000)); assert (options.memtablefactoryname (). equals ("hashskiplistrepfactory")); Options.setMemtableConfig (новый HashlinkedListmeMtableConfig () .SetBucketCount (100000)); assert (options.memtableFactoryName (). equals ("hashlinkedListrepFactory")); Options.setMemtableConfig (new VectormeMtableConfig (). SetReservedSize (10000)); assert (options.memtableFactoryName (). equals ("vectorRepFactory")); Options.setMemtableConfig (new SkiplistmemtableConfig ()); assert (options.memtablefactoryname (). equals ("skiplistfactory")); Options.SetTableFormatConfig (new PlailableConfig ()); // Плокий таблица требует опций MMAP Reads.setAllowmalmapReads (true); assert (options.tableFactoryName (). equals ("Wralateable")); Options.SetRatelimiter (RateLimiter); final BlockBasedTableConfig table_options = new BlockBasedTableConfig (); table_options.setBlockCacheSize(64 * SizeUnit.KB) .setFilter(bloomFilter) .setCacheNumShardBits(6) .setBlockSizeDeviation(5) .setBlockRestartInterval(10) .setCacheIndexAndFilterBlocks(true) .setHashIndexAllowCollision(false) .setBlockCacheCompressedSize(64 * Sizeunit.kb) .setblockcachecompressednumshardbits (10); assert (table_options.blockcachesize () == 64 * sizeunit.kb); assert (table_options.cachenumshardbits () == 6); assert (table_options.blocksiedeviation () == 5); assert (table_options.blockrestartinterval () == 10); assert (table_options.cacheindexandfilterblocks () == true); assert (table_options.hashindexallowcollision () == false); assert (table_options.blockcachecompressize () == 64 * sizeunit.kb); assert (table_options.blockcachecompressednumshardbits () == 10); Options.SetTableFormatConfig (table_options); assert (options.tableFactoryName (). equals ("BlockBedTable")); try (final rocksdb db = rocksdb.open (options, db_path)) {db.put ("hello" .getbytes (), "world" .getbytes ()); окончательный байт [] value = db.get ("hello" .getbytes ()); assert ("world" .equals (new String (value))); final String str = db.getProperty ("Rocksdb.stats"); assert (str! = null &&! str.equals ("" ")); } catch (final RocksDbexception e) {System.out.format ("[ошибка] поймал неожиданное исключение - %s/n", e); утверждать (false); } try (final Rocksdb db = rocksdb.open (options, db_path)) {db.put ("hello" .getbytes (), "world" .getbytes ()); byte [] value = db.get ("hello" .getbytes ()); System.out.format ("get (" hello ') = %s/n ", new String (value)); for (int i = 1; i <= 9; ++ i) {for (int j = 1; j <= 9; ++ j) {db.put (string.format ("%dx%d", i, j) .getbytes (), string.format ("%d", i * j) .getbytes (); }} для (int i = 1; i <= 9; ++ i) {for (int j = 1; j <= 9; ++ j) {System.out.format ("%s", new String (db.get (string.format ("%dx%d", i, j) .getbytes ()))); } System.out.println ("" "); } // Написать пакетный тест Try (final writeoptions writeopt = new writeoptions ()) {for (int i = 10; i <= 19; ++ i) {try (final writebatch batch = new writebatch ()) {для (int j = 10; j <= 19; ++ j) {batch.put (string.format ("%dx%d String.format ("%d", i * j) .getbytes ()); } db.write (writeopt, parath); }}} для (int i = 10; i <= 19; ++ i) {for (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", New String (db.get (string.format ("%dx%d", i, j) .getbytes ()))); } System.out.println ("" "); } value = db.get ("1x1" .getBytes ()); ASSERT (значение! = NULL); value = db.get ("world" .getbytes ()); assert (значение == null); value = db.get (readoptions, "world" .getbytes ()); assert (значение == null); окончательный байт [] testKey = "asdf" .getBytes (); Окончательный байт [] testValue = "asdfghjkl; '?> <mnbvcxzqwertyuiop {+_) (*&^%$#@". getbytes (); db.put (testkey, testvalue); byte [] testresult = db.get (testkey); (Arrays Строка (Testresult)); == Rocksdb.not_found); ASSERT (LEN == ROCKSDB.NOT_FOUND); writeopts = writeoptions ()) {writeopts.setsync (true); LEN)); System.out.println («Неудача в вызове getTickerCount»); Stats.gethistogramdata (Histogramtype); DB.Newiterator ()) { if (seektofirstpassed) {System.out.println ("Итераторный (iterator.value ()! = NULL); (iterator.value ()! = NULL); iterator.isvalid (); null);Выше приведено все содержание установки и применения RockSDB в Java, представленном вам на этот раз. Если вы все еще ничего не понимаете после обучения, вы можете обсудить это в области сообщений ниже. Спасибо за поддержку Wulin.com.