标签: leveldb

LevelDB是否支持热备份(或等效)?

目前我们正在评估几个关键+值数据存储,以替换owr主应用程序当前使用的旧isam(20年左右!)......

问题是我们当前的isam不支持崩溃恢复.

所以LevelDB似乎对我们好(也检查BerkleyDB等)

但是我们遇到了热备份的问题,并且鉴于LevelDB是一个库,而不是服务器,要求"热备份"是很奇怪的,因为它直观地暗示了外部备份过程.

也许有人想提出选择(或已知的解决方案)?

例如: - 通过主要应用程序的内部线程进行热备份? - 仅通过复制LevelDB数据目录进行热备份?

提前致谢

database leveldb

7
推荐指数
1
解决办法
3448
查看次数

将数据转换为leveldb以获取caffe

我在Matlab中有一堆二维数据矩阵(没有图像数据,但有一些单精度数据).

有谁知道如何将2D matlab矩阵转换为caffe所需的leveldb格式来训练自定义神经网络?

我已经完成了关于如何训练图像(使用imagenet架构)和mnist(数字识别数据集)的教程.但是在后一个例子中,他们没有展示如何创建相应的数据库.在教程中,已经提供了数据库.

matlab leveldb caffe conv-neural-network matcaffe

7
推荐指数
1
解决办法
3419
查看次数

如何使用LevelDB?

http://code.google.com/p/leveldb/开始,似乎没有明确或容易将LevelDB与Go一起使用.但我真的想知道如何在Go中使用它.

谁能给我一个线索?

go leveldb

6
推荐指数
3
解决办法
1万
查看次数

Scala SBT和JNI库

我正在编写一个简单的应用程序,Scala它通过leveldbjni库使用leveldb数据库.我的build.sbt文件看起来像这样:

name := "Whatever"

version := "1.0"

scalaVersion := "2.10.2"

libraryDependencies ++= Seq(
    "org.iq80.leveldb" % "leveldb-api" % "0.6",
    "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.7"
)
Run Code Online (Sandbox Code Playgroud)

Object然后,An 负责创建数据库.不幸的是,如果我运行该程序,我会回到一个java.lang.UnsatisfiedLinkError由引擎盖下利用的hawtjni库引发的leveldbjni.

也可以通过scala控制台轻松触发错误:

scala> import java.io.File
scala> import org.iq80.leveldb._
scala> import org.fusesource.leveldbjni.JniDBFactory._
scala> factory.open(new File("test"), new Options().createIfMissing(true))

java.lang.UnsatisfiedLinkError: org.fusesource.leveldbjni.internal.NativeOptions.init()V
    at org.fusesource.leveldbjni.internal.NativeOptions.init(Native Method)
    at org.fusesource.leveldbjni.internal.NativeOptions.<clinit>(NativeOptions.java:54)
    at org.fusesource.leveldbjni.JniDBFactory$OptionsResourceHolder.init(JniDBFactory.java:98)
    at org.fusesource.leveldbjni.JniDBFactory.open(JniDBFactory.java:167)
    at .<init>(<console>:15)
...
scala> System getProperty "java.io.tmpdir"
res2: String = /var/folders/1l/wj6yg_wd15sg_gcql001wchm0000gn/T/
Run Code Online (Sandbox Code Playgroud)

我无法理解正在发生的事情,因为从jar文件中正确地提取了库,但由于某些原因它没有被加载.

$ file /var/folders/1l/wj6yg_wd15sg_gcql001wchm0000gn/T/lib* …
Run Code Online (Sandbox Code Playgroud)

java-native-interface scala sbt leveldb

6
推荐指数
1
解决办法
2658
查看次数

如何避免在ActiveMQ检查点调用后阻塞队列浏览

当将ActiveMQ与大量持久性队列(250)á1000持久性TextMessagesá10 KB一起使用时,会出现问题。

一个场景需要这些消息在很长一段时间(几天)内保留在存储中,直到被消耗为止(为许多消费者分阶段分发大量数据以进行分发,这些数据可能会离线几天)。

在持久性存储中填充了这些消息之后,并且在代理重新启动之后,我们可以浏览/使用一些队列, 直到 30秒后调用#checkpoint。

此调用导致代理使用所有可用内存,而不会将其释放用于其他任务,例如队列浏览/使用。在内部,MessageCursor似乎决定内存不足,并停止将队列内容传送到浏览器/消费者。

=>有没有办法通过配置来避免这种行为,或者这是一个错误?

期望我们可以在任何情况下使用/浏览任何队列。

下面的设置已经投入生产了一段时间,并在ActiveMQ文档中应用了一些建议(目标策略,systemUsage,持久性存储选项等)。

  • 使用ActiveMQ测试行为:5.11.2、5.13.0和5.5.1。
  • 内存设置:Xmx = 1024m
  • Java:1.8或1.7
  • 操作系统:Windows,MacOS,Linux
  • PersistenceAdapter:KahaDB或LevelDB
  • 光盘:足够的可用空间(200 GB)和物理内存(最大16 GB)。

除了上述设置之外,我们还对代理使用以下设置(顺便说一句:将memoryLimit更改为一个较小的值(如1mb)不会改变这种情况):

<destinationPolicy>
    <policyMap>
        <policyEntries>
            <policyEntry queue=">" producerFlowControl="false" optimizedDispatch="true" memoryLimit="128mb" timeBeforeDispatchStarts="1000">
                <dispatchPolicy>
                    <strictOrderDispatchPolicy />
                </dispatchPolicy>
                <pendingQueuePolicy>
                    <storeCursor />
                </pendingQueuePolicy>
            </policyEntry>
        </policyEntries>
    </policyMap>
</destinationPolicy>
<systemUsage>
    <systemUsage sendFailIfNoSpace="true">
        <memoryUsage>
            <memoryUsage limit="500 mb" />
        </memoryUsage>
        <storeUsage>
            <storeUsage limit="80000 mb" />
        </storeUsage>
        <tempUsage>
            <tempUsage limit="1000 mb" />
        </tempUsage>
    </systemUsage>
</systemUsage>
Run Code Online (Sandbox Code Playgroud)

如果我们根据memoryUsage和可用堆空间之间的差异将destinationPolicy中的cursorMemoryHighWaterMark设置为较高的值(例如150600),则可以缓解这种情况,但这对生产系统而言并不是真正的选择。视图。

带有来自Oracle Mission Control的信息的Screenie,显示了从未从内存释放的ActiveMQTextMessage实例:

http://goo.gl/EjEixV

java memory activemq-classic leveldb kahadb

6
推荐指数
1
解决办法
1427
查看次数

在编译自定义caffe层时,LevelDB中出现了一个奇怪的错误

#include <leveldb/status.h>
#include <leveldb/db.h>
#include <leveldb/write_batch.h>
...
int arg_offset = 0;
leveldb::DB* db1;
leveldb::Options options;
options.error_if_exists = true;
options.create_if_missing = true;
options.write_buffer_size = 268435456;
leveldb::WriteBatch* batch;
...
if (db_backend == "leveldb") 
{  
    // leveldb
    LOG(INFO) << "Opening leveldb " << argv[arg_offset+2];
    leveldb::Status status1 = leveldb::DB::Open(options, argv[arg_offset+2], &db1);
    CHECK(status1.ok()) << "Failed to open leveldb " << argv[arg_offset+2];
    batch = new leveldb::WriteBatch();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码段会生成以下错误

$ g++ tools/convert_imageset_and_disparity.cpp -MMD -MP -pthread -fPIC -DCAFFE_VERSION=1.0.0-rc5 -DNDEBUG -O2 -DUSE_OPENCV -DUSE_LEVELDB -DUSE_LMDB -DWITH_PYTHON_LAYER -I/usr/include/python3.5m -I/usr/lib/python3.5/dist-packages/numpy/core/include -I/usr/local/include -I/usr/include/hdf5/serial …
Run Code Online (Sandbox Code Playgroud)

c++ leveldb c++11 caffe

6
推荐指数
1
解决办法
367
查看次数

无法构建 Objective-C 模块“CoreFoundation”

通过 CocoaPods 更新 Firebase 后,我遇到了此问题。

任何帮助是极大的赞赏。

任何高于 4.0.2 的 Firebase 版本都会在 Xcode(版本 10.1)中导致相同的错误。

错误:

Swift 编译器错误

  • 找不到“字符串”文件

  • 无法构建 Objective-C 模块“CoreFoundation”

已经尝试过:

  • 清洁项目

  • 手动添加SDK

  • 删除级别数据库并手动添加

问题出在哪里?使用 Swift 文件/标头?用leveldb?还是火力基地?

相关(GitHub 上的类似问题,但那里建议的解决方案对我不起作用):

https://github.com/google/leveldb/issues/515

Xcode 消息:

> <module-includes>:1:9: note: in file included from
> <module-includes>:1:
> #import "Headers/CoreFoundation.h"
>         ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:43:10:
> note: in file included from
> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:43:
> #include <CoreFoundation/CFBase.h>
>          ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:72:10:
> note: in file included from
> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:72:
> #include <Block.h>
>          ^ /Users/Besfort/Desktop/Coding/Xcode - projects/0.1/Pods/leveldb-library/table/Block.h:10:10: note: in file …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch core-foundation ios leveldb firebase

6
推荐指数
0
解决办法
1254
查看次数

从 LevelDB“.ldb”文件恢复数据

我正在尝试从 .ldb 文件中提取数据。Chrome 扩展 OneTab 出现故障,我正在尝试恢复它保存的链接。我相信我已经从一篇旧的博客文章中找到了解决方案,但我对编码了解不够,无法弄清楚如何遵循。

以下是博客文章的链接: https://antimatter15.com/2015/12/recovering-deleted-data-from-leveldb/

我相信我已经按照他的建议正确完成了构建 Go 应用程序的所有操作。它创建了一个名为“ldbdump”的文件,没有文件扩展名。下一步是我遇到麻烦的地方。我尝试在 Jupyter Notebook 中运行他的 Python 代码(这是我唯一使用过 Python 的软件,而且经验有限),但只会出现错误。

我正在使用的原始代码可以在上面的“恢复”标题下的链接中找到。我将“base”的定义从“test-stuff copy”更改为指向包含我尝试读取的 .ldb 文件以及“ldbdump”文件的文件夹。出现错误后,我还更改了底部打印命令的语法。其他一切都被搁置了。

base = "D:\\Downloads\\ldb archive"

import os
from subprocess import Popen, PIPE
import json
import ast

for f in os.listdir(base):
  if f.endswith(".ldb"):
    process = Popen(["ldbdump", os.path.join(base, f)], stdout=PIPE)
    (output, err) = process.communicate()
    exit_code = process.wait()
    for line in (output.split("\n")[1:]):
      if line.strip() == "": continue
      parsed = ast.literal_eval("{" + line + "}")
      key = parsed.keys()[0]
      print(json.dumps({ "key": key.encode('string-escape'), "value": parsed[key] …
Run Code Online (Sandbox Code Playgroud)

python go leveldb

6
推荐指数
1
解决办法
9797
查看次数

水平压实中的层数有什么影响?

我知道 Cassandra、rocksdb 等 DBS 中的分级压缩是如何工作的。有些级别的最大数量为 4,有些级别为 7。这个数字如何影响压缩过程?为什么我不能只有 2 个级别,第一个已刷新内存表数据(文件之间可能重叠)和第二个包含非重叠 SST?

如果有任何文档或重复问题,请重定向。

编辑 1:当级别数增加时,重复数据会增加。

cassandra leveldb rocksdb scylla

6
推荐指数
1
解决办法
444
查看次数

Golang 的键值存储 (Badger DB) 中的性能问题

在 badgerDB 中,我们有数十亿个类型的键string和类型的值HashValueList。在我们的用例中,长度HashValueList可能以百万计。[]byte在插入 BadgerDb 之前,我们必须对键和值进行编码;我们正在使用该encoding/gob包。因此,每当我们需要值时,我们就必须再次解码它们。在我们的例子中,这个解码过程会产生开销。

type HashValue struct {
    Row_id  string
    Address string
}

type HashValueList []HashValue
Run Code Online (Sandbox Code Playgroud)

为了减轻解码开销,我们将设计更改为前缀迭代。通过前缀迭代,我们将集合中的每个值存储为不同的 Badger KV 对,而不是具有大值的单个键。键的前缀将是原始哈希值键。然后,我们需要添加一个后缀,以提供原始集合中值集合的唯一性。所以在你原来的方案中有类似的东西:

k1 -> [v1, v2, v3, ..., vn]
...
km -> [w1, ..., wm]
Run Code Online (Sandbox Code Playgroud)

现在有类似的东西:

k1@1 -> v1
k1@2 -> v2
k1@3 -> v2
...
k1@n -> vn
...
km@1 -> w1
...
km@m -> wm
Run Code Online (Sandbox Code Playgroud)

为了从 DB 中查找值,我们有 n 个 goroutine 读取通道KeyChan并将值写入ValChan

func Get(db *badger.DB, …
Run Code Online (Sandbox Code Playgroud)

go key-value-store leveldb rocksdb badgerdb

6
推荐指数
1
解决办法
2016
查看次数