问题标签 [rocksdb-java]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RocksDB WriteBatch 线程安全吗?
例如,一个类有一个私有数据库和一个公共方法 - put
。我们有几个线程要运行put
,这样可以吗?(ps:我们不考虑 k/v 的顺序)
这里的医生说
但是对于上面的示例,线程不共享相同的WriteBatch
,它们拥有自己的WriteBatch
,并写入数据库。所以我想知道这样可以吗?
clojure - RocksDB 迭代器寻找直到最后一个匹配的前缀
我如何告诉 RocksDB 迭代器寻找直到最后一个匹配的前缀?
在 Clojure 中使用 RocksDB Java API:
我是否必须手动检查下一个键是否与前缀匹配?这似乎不是最理想的,因为我必须输入整个密钥来检查它,而 RocksDB 可能会提前退出。
rocksdb - 每当我在rocksdb中为同一个键输入值时,值都会更新并且计数也会增加
每当我在rocksdb中为同一个键赋值时。值得到更新。但是通过以下方法 db.getLongProperty(columnFamily, "rocksdb.estimate-num-keys") 的计数会增加。为什么我会出现这种奇怪的行为?
java - Kafka Streams API:会话窗口异常
我正在尝试创建一个 Kafka 拓扑并将其分解为更具可读性。我有一个按键分组的流,然后我试图像这样窗口化它:
不幸的是,抛出了以下异常:
我不确定问题是否与未在某处指定的 Serdes 相关。我在.groupByKey(Grouped.with(Serdes.ByteArray(), Serdes.ByteArray()))
按键分组时确实使用过。我怀疑我一路上没有正确映射一些东西。
Caused by: org.rocksdb.RocksDBException: You have to open all column families. Column families not opened: keyValueWithTimestamp
对我来说也是可疑和神秘的。无论哪种方式,我都不确定如何解决这个问题。
我知道以下代码确实有效:
如何在不触发rocksdb存储异常的情况下分解它?
config - RocksDB配置建议
我正在寻找有关我的 RocksDB 配置的建议。我们的用例是将 100GB 的键值对加载到 Rocksdb 中,并且在运行时只为数据库中的键值对提供服务。密钥为 32 字节,值大小为 1.6 KB。
我们现在拥有的是我们使用 hadoop 使用 SstFileWriter api 生成一个 100GB 的 sst 文件并将其保存在 S3 中。出现的每个新服务器都使用:db.ingestExternalFile(..) 来摄取文件。我们使用 i3.large 机器(15.25 GiB | 2 vCPUs | 475 GiB NVMe SSD)。给定当前配置,来自 Rocksdb 的 P95 和 avg 响应:
- 块大小 = 2KB
- 格式版本 = 4
- Read-Write=100% 在运行时读取
约为 1 毫秒,但 P99 和 PMAX 非常糟糕。我们正在寻找某种方法来减少大约 10 倍 P95 的 PMAX 响应时间。
谢谢。
java - 如何使用 RocksDB 尾随迭代器?
我正在使用 RocksDB Java JNI,并希望在将新条目添加到 RocksDB 时获取它们。
在这里,我想它是在那个时刻(即之后)创建一个快照1 sec
,并且只有那些添加的元素才会被打印出来。我预计尾随迭代器应该被阻塞,因为将添加新条目。
有没有关于如何在 RocksDB 中使用尾迭代器的示例?
rocksdb - 在rocksdb中按值排序
Rocksdb 允许按键对记录进行排序,但我想按值对记录进行排序。有可能这样做吗?
apache-flink - RocksDB 在 flink 中出现消费者问题
我有一份使用 RabbitMQ 的工作,我使用的是 FS 状态后端,但状态的大小似乎变大了,然后我决定将我的状态移动到 RocksDB。问题是,在运行作业的最初几个小时内,如果流量变慢,则在更多时间后发生事件,但是当流量再次变高时,消费者开始出现问题(事件被堆积为未确认),然后这些问题是反映在应用程序的其余部分。
我有: 4 个 CPU 内核
本地磁盘
16GB RAM
Unix 环境
Flink 1.11
Scala 版本 2.11
1 个使用少量 keyedStreams 运行的单个作业,以及大约 10 次转换,并沉入 Postgres
一些配置
让我知道是否需要更多信息?
java - 在kafka流应用程序中关闭或不关闭RocksDB Cache和WriteBufferManager
我目前正在RocksDB
通过扩展RocksDBConfigSetter
接口在我的流应用程序中使用自定义配置。我看到关于关闭cache
和writeBufferManager
实例的相互矛盾的文档。
现在,我看到 javadoc 和其中一个文档页面建议我们需要关闭所有在覆盖方法中扩展的实例RocksObject
(两个实例都扩展了此类)Cache
。WriteBufferManager
RocksDBConfigSetter#close()
但是,内存管理文档页面建议我们将这些实例创建为静态实例,而不是在被覆盖的方法中关闭Cache
and实例。WriteBufferManager
RocksDBConfigSetter#close()
不知道要在这里遵循什么。如果有人可以帮助我了解哪些文档是正确的,如果我们想通过传入自定义的 RocksDB 配置来限制内存使用量,那么我们将不胜感激。
如果我们将它们声明为静态,可以不关闭这些实例吗?
rocksdb - RocksDBException:不存在
例外:
文件 (.sst) 位于 /vdt/derived
需要帮助来解决这个问题。