问题标签 [rocksdb]

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.

0 投票
2 回答
3457 浏览

java - RocksDB:太多非常小的 SST 文件

我在运行服务一段时间后使用 RocksDBJava,我可以看到“打开的文件太多”异常。挖掘了门户网站上提到的上一个问题,我发现这是因为系统限制打开最大文件数。当我检查 RocksDB 正在使用的目录时,我注意到有超过 100K 大小为 1KB 的 sst 文件,这可能是给定错误的原因。我想知道有什么方法可以配置rocksDB生成大尺寸的SST文件,这样创建的文件总数最少,我们可以避免这个错误。

同样在我当前的项目中,有许多读取线程和一个写入线程,我在读取或写入 RocksDB 之前打开和关闭连接(使用RocksDB.open()and )。RocksDB.close()

0 投票
0 回答
1346 浏览

logging - 如何禁用 RocksDB 数据库调试日志记录?

RocksDB写了详细的数据库调试日志

数据库调试日志

RocksDB 将详细日志写入名为 LOG* 的文件。这些主要用于调试和分析正在运行的系统。此 LOG 可配置为以指定的周期滚动。

在通过 crate 与 RocksDB 交互的 Rust 应用程序中rust-rocksdb,我尝试将keep_log_file_num设置为0,通过:

但这会导致我的应用程序因超出范围错误而中止。

将其设置为1工作正常,但我想完全摆脱它。

认为将最大日志文件数设置0为不是可行的方法,但我已经没有想法了。如何禁用 RocksDB 数据库调试日志记录?我想控制这种行为。

0 投票
1 回答
1436 浏览

c++ - 为 RocksDB 实现一个比较器

我对当前扩展 Rocksdb::Comparator 的类有一些链接问题。

“NumericKeyComparator.cpp”

特别是原始类(由.h文件提供)如下,相当于LevelDB中的类:

<rocksdb/comparator.h >

在链接到可执行文件的阶段,会引发以下与 .o 文件有关的错误:

NumericKeyComparator.cpp.o:(.data.rel.ro+0x10):未定义重新引用到“rocksdb::Comparator 的类型信息”

collect2:错误:ld 返回 1 个退出状态

尽管我认为我如何扩展课程存在问题(但老实说,我不知道,因为我试图遵循 中提供的示例comparator_db_test.cc,链接是由 CMake 自动提供的,通过使用详细标志, 显示如下:

/usr/bin/c++ -fopenmp -lpthread -lrt -lsnappy -lz -lbz2 -llz4 -lzstd -lnuma -g CMakeFiles/.dir//main.cpp.o ... CMakeFiles/.dir//lib/serializer/ rockdb/comparators/NumericKeyComparator.cpp.o -o -L/usr/lib/x86_64-linux-gnu/libsnappy.so -L/usr/lib/x86_64-linux-gnu/liblz4.so -L/usr/local/ lib/librocksdb.a -Wl,-rpath,/usr/lib/x86_64-linux-gnu/libsnappy.so:/usr/lib/x86_64-linux-gnu/liblz4.so:/usr/local/lib/librocksdb。 a ../_tests/lib/googletest/googlemock/gtest/libgtest.a /usr/local/lib/libstxxl_debug.a -lpthread /usr/lib/x86_64-linux-gnu/libboost_graph.a /usr/lib/x86_64- linux-gnu/libboost_serialization.a /usr/lib/x86_64-linux-gnu/libboost_system.a /usr/lib/x86_64-linux-gnu/libboost_filesystem.a /usr/local/BerkeleyDB.6.2/lib/libdb-6.2。 a -lrocksdb -lpthread -lm -lsnappy -llz4 -lz -lbz2 -lzstd

Comparator 类是虚拟的,并在标头中提供,因此它不应该是链接问题。我什至尝试在编译 .cpp 文件时设置 -frtti 标志,甚至将类声明移动到 .h 本身,但什么也没发生。我一直在 StackOverflow 上阅读所有答案,但没有找到解决方案。

0 投票
1 回答
231 浏览

python - Rocksdb 或 python-rocksd 中是否存在安全漏洞,需要清理从外部源接收的密钥?

我正在开发一个 Web 应用程序,该应用程序将有关文件的元数据存储在 Rocksdb 中,使用他们打包的 base64 MD5 哈希作为键(例如:7XDfSsHImTYaYDUIG8QfYg==)并允许最终用户通过提供相同的键来访问它。Rocksdb 本身或其 python-rocksdb API 是否包含任何漏洞,可以保证在尝试使用它们检索数据之前清理这些接收到的键值?

0 投票
1 回答
1123 浏览

amazon-s3 - EMR 上 S3 的外部检查点

我正在尝试为我的 Flink 程序部署一个生产集群。我正在使用安装了 Flink 1.3.2 的标准 hadoop-core EMR 集群,使用 YARN 运行它。

我正在尝试配置我的 RocksDB 以将我的检查点写入 S3 存储桶。我正在尝试浏览这些文档:https ://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/aws.html#set-s3-filesystem 。问题似乎是使依赖项正常工作。尝试运行程序时收到此错误:

我已经尝试离开和调整 core-site.xml 并保持原样。我尝试将 设置为HADOOP_CLASSPATH包含/usr/lib/hadoop/share(我假设是)上述指南中描述的大多数 JAR。我尝试下载 hadoop 2.7.2 二进制文件,并将它们复制到 flink/libs 目录中。所有导致相同的错误。

有没有人成功让 Flink 能够在 EMR 上写入 S3?

编辑:我的集群设置

AWS 门户:

集群启动后,我 ssh 进入 Master 并执行以下操作:

我的 conf/flink-conf.yaml 我添加了以下字段:

我的程序的检查点设置:

如果您认为我缺少任何步骤,请告诉我

0 投票
1 回答
264 浏览

mysql - Percona MyRocks 存储引擎和复制

如果我们在从站上选择 Percona MyRocks 存储引擎并复制运行 Innodb 引擎的 Galera Cluster,谁能告诉我。这样的复制是否有效,如果是这样,它破坏通过 Pt-schema-change 在 Galera 集群上完成的模式更改的可能性有多大。

0 投票
1 回答
3298 浏览

python - rockdb.errors.RocksIOError: IO 错误: While lock file: sample.db/LOCK: 资源暂时不可用

如何删除rocksDB上的LOCK

我尝试运行以下代码但收到以下错误

代码 :

0 投票
1 回答
271 浏览

c++ - 在 RocksDB 或 LevelDB 中,使用 C++ 向量通过索引查询是否比通过键(索引)查询更快?

我正在考虑使用 RocksDB 或 LevelDB 为我的人脸识别软件持久存储我的数据。现在,我使用的是 c++ 向量,它不是持久的,这意味着每次我重新启动我的软件时,我都必须将数据重新加载到我的向量中。我的数据有大约 100 万个元素,每个元素都是 512 个浮点数的向量。查询速度是最受关注的问题,理想情况下,当我使用索引进行查询时,我需要 o(1) 的查询速度。根据我的研究,我真的无法为 RocksDB 和 LevelDB 找到这样的保证。

我的问题是值得我投入精力使用 RocksDB 或 LevelDB 还是它们比向量慢?

0 投票
2 回答
1141 浏览

mysql - RocksDB 与 Cassandra

MyRocks (MySql) 和 Cassandra 都使用 LSM 架构来存储它们的数据。因此,我在 MySql 和 Cassandra 中使用 MyRocks 作为存储引擎填充了大约 500 万行。在 Cassandra 中只需要 1.7 GB 的磁盘空间,而在使用 MyRocks 作为存储引擎的 MySql 中则需要 19 GB。

我错过了什么吗?两者都使用相同的 LSM 机制。但是为什么它们的数据大小不同呢?

更新:

我想这与文本列有关。我的表结构是(bigint、bigint、varchar、text)。

  • 填充的行数:300 000
  • MyRocks 中的数据大小为 185MB
  • 在 Cassandra 中 - 13 MB。

但是如果我删除文本列然后:

  • MyRocks - 21.6 MB
  • 卡桑德拉 - 11 MB

关于这种行为的任何想法?

0 投票
1 回答
136 浏览

java - Kafka Streams JoinWindow 的数据

在 Kafka Streams 中,我使用的是使用 JoinWindow 的 Stream/Stream 连接。

据我了解,JoinWindows 是使用 Stores 实现的,然后两个流的数据都存储在 RocksDB 数据库中。但是,一旦事件时间到期(超过了until()中定义的保留时间),物理数据会发生什么情况?它们是否从 RocksDB 数据库中删除?