@nxtedition/rocksdb 13.2.0 → 13.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/binding.cc CHANGED
@@ -917,39 +917,60 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
917
917
  NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompression", blobCompression));
918
918
  columnOptions.blob_compression_type = blobCompression ? rocksdb::kZSTD : rocksdb::kNoCompression;
919
919
 
920
- bool prepopulateBlobCache = false;
921
- NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlobCache", prepopulateBlobCache));
922
- columnOptions.prepopulate_blob_cache = prepopulateBlobCache ? rocksdb::PrepopulateBlobCache::kFlushOnly : rocksdb::PrepopulateBlobCache::kDisable;
923
-
924
920
  rocksdb::BlockBasedTableOptions tableOptions;
925
921
  tableOptions.decouple_partitioned_filters = true;
926
922
 
927
- {
928
- uint32_t cacheSize = 0;
929
- NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheSize", cacheSize));
930
-
931
- if (cacheSize) {
932
- columnOptions.blob_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
933
- }
934
- }
935
-
936
923
  {
937
924
  uint32_t cacheSize = 8 << 20;
925
+ double compressedRatio = 0.0;
938
926
  NAPI_STATUS_RETURN(GetProperty(env, options, "cacheSize", cacheSize));
927
+ NAPI_STATUS_RETURN(GetProperty(env, options, "cacheCompressedRatio", compressedRatio));
939
928
  NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheSize", cacheSize));
929
+ NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheCompressedRatio", compressedRatio));
940
930
 
941
- if (cacheSize) {
942
- tableOptions.block_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
943
- } else {
931
+ if (cacheSize == 0) {
944
932
  tableOptions.no_block_cache = true;
933
+ } else if (compressedRatio > 0.0) {
934
+ rocksdb::TieredCacheOptions options;
935
+ options.total_capacity = cacheSize;
936
+ options.compressed_secondary_ratio = compressedRatio;
937
+ options.comp_cache_opts.compression_type = rocksdb::CompressionType::kZSTD;
938
+ tableOptions.block_cache = rocksdb::NewTieredCache(options);
939
+ } else {
940
+ tableOptions.block_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
945
941
  }
942
+
943
+ bool prepopulateBlockCache = false;
944
+ NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", prepopulateBlockCache));
945
+ tableOptions.prepopulate_block_cache = prepopulateBlockCache
946
+ ? rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly
947
+ : rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
946
948
  }
947
949
 
948
- bool prepopulateBlockCache = false;
949
- NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", prepopulateBlockCache));
950
- tableOptions.prepopulate_block_cache = prepopulateBlockCache
951
- ? rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly
952
- : rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
950
+ {
951
+ uint32_t cacheSize = -1;
952
+ double compressedRatio = 0.0;
953
+ NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheSize", cacheSize));
954
+ NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheCompressedRatio", compressedRatio));
955
+
956
+ if (cacheSize == -1) {
957
+ columnOptions.blob_cache = tableOptions.block_cache;
958
+ } else if (cacheSize == 0) {
959
+ columnOptions.blob_cache = nullptr;
960
+ } else if (compressedRatio > 0.0) {
961
+ rocksdb::TieredCacheOptions options;
962
+ options.total_capacity = cacheSize;
963
+ options.compressed_secondary_ratio = compressedRatio;
964
+ options.comp_cache_opts.compression_type = rocksdb::CompressionType::kZSTD;
965
+ columnOptions.blob_cache = rocksdb::NewTieredCache(options);
966
+ } else {
967
+ columnOptions.blob_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
968
+ }
969
+
970
+ bool prepopulateBlobCache = false;
971
+ NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlobCache", prepopulateBlobCache));
972
+ columnOptions.prepopulate_blob_cache = prepopulateBlobCache ? rocksdb::PrepopulateBlobCache::kFlushOnly : rocksdb::PrepopulateBlobCache::kDisable;
973
+ }
953
974
 
954
975
  std::string optimize = "";
955
976
  NAPI_STATUS_RETURN(GetProperty(env, options, "optimize", optimize));
@@ -1125,6 +1146,10 @@ NAPI_METHOD(db_open) {
1125
1146
 
1126
1147
  NAPI_STATUS_THROWS(GetProperty(env, options, "memTableHugePageSize", dbOptions.memtable_huge_page_size));
1127
1148
 
1149
+ NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOReads", dbOptions.use_direct_reads));
1150
+
1151
+ NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOForFlushAndCompaction", dbOptions.use_direct_io_for_flush_and_compaction));
1152
+
1128
1153
  // TODO (feat): dbOptions.listeners
1129
1154
 
1130
1155
  std::string infoLogLevel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/rocksdb",
3
- "version": "13.2.0",
3
+ "version": "13.3.1",
4
4
  "description": "A low-level Node.js RocksDB binding",
5
5
  "license": "MIT",
6
6
  "main": "index.js",