YDN-DB 可以一次处理大型条目吗?

Posted

技术标签:

【中文标题】YDN-DB 可以一次处理大型条目吗?【英文标题】:Can YDN-DB handle large entries at once? 【发布时间】:2014-04-26 13:41:42 【问题描述】:

我在尝试使用 Ydn-db 检索大量数据时遇到了麻烦。

问题是:

-我有一个大的 JSon 文件,我想将它存储在我的应用程序中以供离线使用

-我查询文件然后使用db.put成功保存数据

-然后,如果我使用db.values“打印”存储的数据,我只会得到我之前保存的文本的一部分。

您也可以使用此处作为示例给出的待办事项列表演示对其进行测试:http://dev.yathit.com/demo/ydn-db/todo.html

如果您输入,比如说输入中的 1MB 文本,您不会保存整个文本,而只是保存其中的一小部分。

有没有办法解决这个问题?

谢谢!

编辑: 这是我正在谈论的一个工作示例http://flatic.com/test.html

编辑 2: 好的,我想我找到了一个临时解决方案,看起来 YDN-DB 不能存储超过 100 个 Json 对象,所以不要直接保存我的 Json 数据,例如:

db.put('table',largeJsonData);

我首先将largeJsonData 作为字符串放入一个简单的 Json 数组中,如下所示:

var data = 
"json":largeJsonData
;

db.put('table',data);

现在我可以读取数据了:

db.values('table').done(function(items) 
console.log(items[0].json);
);

但是您将无法通过任何给定的 Id 进行索引搜索或获取特定值

【问题讨论】:

我想你会发现基于这个子系统的限制:***.com/questions/2989284/… 【参考方案1】:

请通过一个简单的测试来证明您的主张。我不认为浏览器限制为每条记录 1mb。如果失败,则整个失败。部分提交是不可能的。

如果是 websql,在 JSON 序列化过程中可能会丢失。可能的。没有测试。

问题更新后编辑。

您的数据不是文本,您对其进行解析 - 并变成 JSON 对象数组。 db.put 会将它们作为单独的记录单独插入。 db.values 有 100 条记录限制。如果你限制db.values('todo', null, 100000),你应该得到所有。

100 限制对用户来说是常见的惊喜。我讨厌 API 上的惊喜。但我仍然觉得这种方法应该有一个限制。

【讨论】:

奇怪的是,我能够复制 4092 字节的文本截断。这是我在 Todo 演示中使用的 1mb 字符串:gist.github.com/editor/f85257b29f51ac5a3280 它是演示而不是库吗? 演示井代表库。是复制/粘贴问题吗? 似乎是一个可靠的猜测 我想我找到了问题所在,它就像 db.values 不接受同一个数组中的相似对象,例如,如果你创建一个包含 5 个具有相同内容的对象的 Json 数组,它将采用数组好像它只有 1 个对象。我看到我的 Json 数组有两个相似的对象,它们仅在 1 个数字上有所不同,这在这里造成了问题。 好的.. 我将密钥路径更改为随机自动递增的路径,因此它们始终是唯一的。现在它终于工作了!问题在于 Keypath 不是唯一的。【参考方案2】:

在演示中,浏览器似乎正在截断输入字段。

String.length 给你 ~bytesize 英文。我使用了“***.com|”的复制/粘贴 0.87 mb 字符串:https://gist.github.com/editor/f85257b29f51ac5a3280

您可以在这里看到我将big_string 分配给输入字段值。

当我读回它时,它小了 397308 字节。

IDB 确实受其实现技术的约束(Chrome 中的 LevelDB,Firefox 中的 SQLLite)。例如,我保证大型数据对象的写入量会很低。但是,如果 Kyaw 说作为图书馆的作者没有图书馆限制,就 YDN 而言,我会相信他。

【讨论】:

以上是关于YDN-DB 可以一次处理大型条目吗?的主要内容,如果未能解决你的问题,请参考以下文章

并行化大型动态程序

将日志条目排列到日期文件中

R子集嵌套列表,选择多个条目

在大型数据集(~3M 条目)上使用 PostgreSQL 进行特征工程

单个主机文件条目可以包含多个域/子域吗?

gsutil 可以创建加速 gcsfuse 所需的伪目录条目吗?