标签: leveldb

了解KeyValue嵌入式数据存储区与FileSystem

我有一个关于FileSystem用法的基本问题我想使用嵌入式KeyValue存储,它非常面向写入.(持久)说我的值大小是a)10 K b)1 M并且读取和更新的数量相等

我只是创建包含值的文件,并且名称作为键.

它不像使用KeyDB或RocksDB这样的KeyValue存储一样快.

请有人帮我理解.

file key-value leveldb

10
推荐指数
1
解决办法
2248
查看次数

在没有Ecto的情况下使用Phoenix Framework

我正在开发一个带有由Phoenix支持的Web界面的应用程序,我正在探索当前SQLite(及其Ecto驱动程序)的替代存储方法(是的,我听说过PGSQL,不,我不愿意使用它.)

我想使用LevelDB和H2LevelDB,它在Github上有一个Erlang驱动程序

然而,在编译时我意识到Phoenix似乎很依赖Ecto,即使在负责渲染eex模板的模块中也是如此.我发现有点可怕,有点奇怪,同时有点烦人.那么,从预先生成的文件中盲目地清除对Ecto的所有引用是否安全,或者我应该为我的Web UI切换到其他内容?

elixir leveldb ecto phoenix-framework

9
推荐指数
1
解决办法
4258
查看次数

双精度浮点比较

我在这里有点困惑 - 当双打存储为不透明(二进制)字段时,双打的比较仍能正常工作吗?我面临的问题是双重包括符号的前导位(即正或负),当它们存储为二进制数据时,我不确定它是否会被正确比较:

在此输入图像描述

我想确保比较正常,因为我在LevelDB中使用double作为关键元组的一部分(例如),我想保留正数和负数的数据局部性.LevelDB仅使用不透明字段作为键,但它允许用户指定他/她自己的比较器.但是,我只是想确保我没有指定比较器,除非我绝对需要:

// Three-way comparison function:
//   if a < b: negative result
//   if a > b: positive result
//   else: zero result
inline int Compare(const unsigned char* a, const unsigned char* b) const 
{
    if (*(double*)a < *(double*)b) return -1;
    if (*(double*)a > *(double*)b) return +1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point double comparison leveldb

8
推荐指数
1
解决办法
1024
查看次数

为什么LevelDB需要两个以上的级别?

我认为只有两个级别(级别0和级别1)可以,为什么LevelDB需要级别2,级别3等等?

leveldb

8
推荐指数
2
解决办法
3632
查看次数

LevelDB是密钥的最大长度限制吗?

LevelDB密钥是否有密钥长度的限制?

我想用url作为密钥来保存数据.因此,这些网址可能会非常长ig整体http: // veryveryfvery very very a长度非常长,非常浪费.每个人都可以从不是每个人都非常友好

nosql leveldb

8
推荐指数
1
解决办法
3026
查看次数

KahaDB和LevelDB - 真正的区别是什么?

我正试图ActiveMQ 5.8.0在我的项目中使用.有两种不同的存储配置,KahaDBLevelDB.根据问题,Kaha可以比Level更快或Level可以比Kaha更快.

它们之间真正的区别是什么?

activemq-classic jms leveldb difference

8
推荐指数
2
解决办法
4401
查看次数

IndexedDB性能和IndexedDB v/s WebSQL性能比较

WebSQL和IndexedDB都是用于访问(CRUD)Web浏览器中底层嵌入式数据库的DB API.其中,如果我是正确的,就像SQL一样访问(CRUD)任何客户端 - 服务器数据库,如Oracle等(在许多情况下,WebSQL和IndexedDB的支持在同一浏览器上可用)

  1. 那么,这是否意味着WebSQL和IndexedDB都在访问(CRUD)相同的底层嵌入式数据库,如果是这样,那么它将在所有Web浏览器上具有相同的性能!
  2. 但我认为情况并非如此,那么它是否意味着Web浏览器将拥有多个底层嵌入式数据库?为什么在同一个浏览器中应该有2个底层嵌入式数据库?

而且由于WebSQL和IndexedDB都是API,所以它意味着说WebSQL和IndexedDB的性能并不完全正确(因为它们更像是查询/访问语言),但它在很大程度上取决于底层嵌入式数据库的性能.而且,根据Google的说法,LevelDB比SQLite更快

  1. 是否正确地说它不是WebSQL和IndexedDB之间的性能差异,而是底层嵌入式数据库的性能?
  2. IE,Chrome,Android浏览器的底层嵌入式数据库是什么?我无法在网上找到这些信息,是否有人发现或编译过它?

browser sqlite web-sql indexeddb leveldb

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

自从'akka.jvm-exit-on-fatal-error'为ActorSystem启用后,线程关闭JVM的未捕获错误

我在命令提示符下运行程序集jar文件并获取下面的异常.并导致终止.

线程[ccp-akka.persistence.dispatchers.default-plugin-dispatcher-23]因为'akka.jvm-exit-on-fatal-error'为ActorSystem [ccp]启用了关闭JVM的未捕获错误

在我的Windows机器上没有其他任何东西在运行.除了jar文件之外,没有代码访问权限.可能是什么问题,我尝试重启机器几次.看起来这个问题只适用于我的机器,因为它在所有其他机器上运行良好.即使我交叉检查所有的环境变量.

附上截图. 在此输入图像描述

jvm actor akka leveldb

8
推荐指数
1
解决办法
3843
查看次数

最新Firebase更新的问题(iOS,CocoaPods)

我通过pod更新将Firebase更新为版本:4.8.0

XCode版本:9.1语言:Objective-C

因为我的Xcode中只发生了奇怪的事情:

"词法或预处理器问题" - 我找不到'string'文件,slice.h和

"解析问题" - 无法构建Objective-C模块"核心基础"

我无法解决这个问题

  • 我更新了CocoaPods
  • 重新安装Firebase
  • 试图手动添加框架
  • 更改构建设置(安装旧的Firebase版本会使错误消失,但这当然不是我的意图)

这有什么不对?leveldb有什么问题吗?

很高兴收到任何帮助!

cocoa ios leveldb firebase firebase-realtime-database

7
推荐指数
0
解决办法
560
查看次数

键值存储中的反向索引和数据建模

我是商店的新手key-value。我的目标是使用嵌入式键值存储来保持持久数据模型。如果使用传统的 RDBMS 设计,数据模型将包含很少的相关表。我正在查看一篇关于为键值存储建模表的中等文章。尽管本文使用 Level DB 和 Java,但我计划在我的工作中使用 Level DBRocksDBFASTERC++。

它使用一种方案,其中每行的每个属性都使用一个键,如下例所示。

$table_name:$primary_key_value:$attribute_name = $value
Run Code Online (Sandbox Code Playgroud)

当用户代码确切地知道要获取哪个键时,上面的内容对于点查找来说是很好的。但也有一些场景,比如搜索具有相同电子邮件地址的用户,或者搜索超过一定年龄的用户,或者搜索某一特定性别的用户。在搜索场景中,文章对所有键执行线性扫描。在每次迭代中,它都会检查键的模式,并在找到具有匹配模式的键后应用业务逻辑(检查匹配的值)。

看来,这种类型的搜索效率很低,在最坏的情况下需要遍历整个商店。为了解决这个问题,需要一个反向查找表。我的问题是

如何建模反向查找表?这是某种轮子的重新发明吗?有什么替代方法吗?

很容易想到的一个解决方案是separate ?为每个可索引属性建立一个存储,如下所示。

$table_name:$attribute_name:$value_1 = $primary_key_value 
Run Code Online (Sandbox Code Playgroud)

采用这种方法,迫在眉睫的问题是

如何处理这个反向查找表中的冲突?因为多个$primary_keys 可能与同一个值相关联。

作为直接的解决方案,可以不存储单个值,而是array存储多个主键,如下所示。

$table_name:$attribute_name:$value_1 = [$primary_key_value_1, ... , $primary_key_value_N]
Run Code Online (Sandbox Code Playgroud)

但是这种类型的建模需要用户代码从字符串解析数组,并在多次操作后再次将其序列化为字符串(假设底层键值存储不知道数组值)。

将多个键存储为数组值是否有效?或者存在一些供应商提供的有效方法?

假设类似字符串化的数组设计有效,每个可索引属性都必须有这样的索引。因此,这提供了对索引什么和不索引什么的细粒度控制。想到的下一个设计决策是这些索引将存储在哪里?

索引应该存储在单独的存储/文件中吗?或者在实际数据所属的同一存储/文件中?每个房产是否应该有不同的商店?

对于这个问题,我没有任何线索,因为这两种方法都需要或多或少相同数量的 I/O。然而,如果数据文件较大,则磁盘上的内容较多,内存上的内容较少(因此 I/O 较多),而对于多个文件,内存上的内容较多,因此页面错误较少。根据特定键值存储的架构,这种假设可能是完全错误的。同时,文件太多会成为管理复杂文件结构的问题。此外,维护索引需要插入、更新和删除操作的事务。拥有多个文件会导致多个树中的单个更新,而拥有单个文件会导致单个树中的多个更新。

交易是否更具体地支持涉及多个存储/文件的交易?

不仅是索引,还有表的一些元信息也需要与表数据一起保存。要生成新的主键(自动递增),需要先了解最后生成的行号或最后一个主键,因为类似 a 的东西COUNT(*)不起作用。另外,由于未对所有键建立索引,因此该meta信息可包括对哪些属性建立索引以及对哪些属性未建立索引。

如何存储每个表的元信息?

同样的一组问题也出现在元表中。例如元应该是一个单独的存储/文件吗?此外,我们注意到并非所有属性都被索引,我们甚至可能决定将每一行作为 JSON 编码值存储在数据存储中,并将其与索引存储一起保存。底层键值存储供应商会将该 JSON 视为字符串值,如下所示。

$table_name:data:$primary_key_value = {$attr_1_name: $attr_1_value, ..., $attr_N_name: $attr_N_value}
...
$table_name:index:$attribute_name = [$primary1, ..., $primaryN] …
Run Code Online (Sandbox Code Playgroud)

database data-modeling key-value-store leveldb rocksdb

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