Realm 数据库大于 json 数据集

问题描述 投票:0回答:1

我有 2 个 json 文件,一个 5.4MB,另一个 3.1MB。这些 json 文件每个都包含一个(大)字符串数组。我将所有这些字符串添加到具有以下架构的单个领域数据库中:

const Word = {
    name: "Word",
    properties: {
        _id: "objectId",
        content: "string",
        language: "string",
    }
}

调用

realm.compact()
之前,数据库大小为39.5MB,调用之后为17.9MB。

以下代码用于插入数据:

 Realm.open(config).then(realm => {
        realm.write(() => {
            const dataPath = __dirname + "/../data/";
            const files = fs.readdirSync(dataPath);

            for (let file of files) {
                const json = getJsonFileContent(dataPath + file);
                const language = file.substring(0, file.indexOf(".json"));

                for (let entry of json) {
                    realm.create("Word", {
                        _id: new Realm.BSON.ObjectId(),
                        content: entry,
                        language: language
                    })
                }
            }
        })
        realm.compact();

我的问题是:为什么数据库实际上比数据集本身更大?我应该使用另一个数据库吗?或者我应该简单地保留 json 文件并直接解析它们?或者尝试限制条目数量?

仅供参考,这个数据库本来是要在移动应用程序中使用的,这里使用的realm JS版本是

12.7.0

json database realm size
1个回答
0
投票

原来的数据大约是10Mb,新的数据大约是17Mb。

有很多因素可以解释这一点;索引、元数据等

此外,显示的 Realm 对象还有一个附加属性

_id: "objectId",

每当一个字符串映射到该对象时,就会创建一个新的 12 字节的 objectId

realm.create("Word", {
   _id: new Realm.BSON.ObjectId(),

所以代码实际上是在原始数据上添加数据,所以文件自然会更大。

例如; 1,000,000 个对象 * 12 字节 = 12M 字节的附加数据 (12 Mb)

© www.soinside.com 2019 - 2024. All rights reserved.