Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase-将JSON对象拆分为多个键值项-性能改进?_Json_Performance_Couchbase - Fatal编程技术网

Couchbase-将JSON对象拆分为多个键值项-性能改进?

Couchbase-将JSON对象拆分为多个键值项-性能改进?,json,performance,couchbase,Json,Performance,Couchbase,假设我的Couchbase数据库有数百万个用户对象,每个用户对象都包含一些基本字段score、balance等。 假设我在每个服务器请求上读写这些字段中的大部分 我看到了在Couchbase中存储用户对象的两个选项: 映射到用户密钥的单个JSON对象,例如user_555 将每个字段映射到单独的条目中,例如分数和余额 选项1-单CB查找、JSON解析 选项2-两次查找,更少的解析(如果有) 我如何判断哪一个性能更好? 如果我有3个字段呢?如果是4呢?这有区别吗 谢谢 Eyal在担心json解析或

假设我的Couchbase数据库有数百万个用户对象,每个用户对象都包含一些基本字段score、balance等。 假设我在每个服务器请求上读写这些字段中的大部分

我看到了在Couchbase中存储用户对象的两个选项:

映射到用户密钥的单个JSON对象,例如user_555 将每个字段映射到单独的条目中,例如分数和余额 选项1-单CB查找、JSON解析 选项2-两次查找,更少的解析(如果有)

我如何判断哪一个性能更好? 如果我有3个字段呢?如果是4呢?这有区别吗

谢谢


Eyal

在担心json解析或额外查找是否会增加系统开销之前,首先考虑您的数据结构和访问模式

从我的角度和经验来看,我会尝试根据逻辑对象分组对文档建模,我会将“用户”属性存储在一起。如果要单独存储每个字段,如果您希望为客户机或服务提供玩家配置文件的完整概述,则必须进行一系列查找

我使用Couchbase作为社交手机游戏的主要数据存储,我们将90%的用户数据存储在用户文档中,其中包含所有相关字段,如分数、级别、,进度等。对于大多数操作,如新评分或升级,我们希望在应用层处理整个用户对象,因此从cb文档中膨胀用户对象是有意义的,更改/读取我们需要的内容,然后在发生更改时再次保存

我们对其他文档唯一的id引用是以玩家购买的形式,其中我们有一个id数组,每个id引用一个单独的购买。我们这样做是因为我们希望获得与用户文档不相关的交易的每个购买日期、交易id、产品类型等更丰富的信息,因为当进行购买时,我们验证其合法性,然后添加到用户库存中,并创建单独的购买文档

因此,我们的结构是:

用户文档:

-特定于用户分数、级别、进度、好友、库存的字段

-指向特定购买的ID数组

<> P>我只考虑在上面列出的一些特定字段,如果您的用户文档变得非常大,但我认为最好是按数据分组而不是特定字段来划分文档。


希望有帮助

首先考虑您的数据结构和访问模式,然后再考虑json解析或额外查找是否会增加系统开销

从我的角度和经验来看,我会尝试根据逻辑对象分组对文档建模,我会将“用户”属性存储在一起。如果要单独存储每个字段,如果您希望为客户机或服务提供玩家配置文件的完整概述,则必须进行一系列查找

我使用Couchbase作为社交手机游戏的主要数据存储,我们将90%的用户数据存储在用户文档中,其中包含所有相关字段,如分数、级别、,进度等。对于大多数操作,如新评分或升级,我们希望在应用层处理整个用户对象,因此从cb文档中膨胀用户对象是有意义的,更改/读取我们需要的内容,然后在发生更改时再次保存

我们对其他文档唯一的id引用是以玩家购买的形式,其中我们有一个id数组,每个id引用一个单独的购买。我们这样做是因为我们希望获得与用户文档不相关的交易的每个购买日期、交易id、产品类型等更丰富的信息,因为当进行购买时,我们验证其合法性,然后添加到用户库存中,并创建单独的购买文档

因此,我们的结构是:

用户文档:

-特定于用户分数、级别、进度、好友、库存的字段

-指向特定购买的ID数组

<> P>我只考虑在上面列出的一些特定字段,如果您的用户文档变得非常大,但我认为最好是按数据分组而不是特定字段来划分文档。


希望有帮助

你的UserDoc、字段和“外键”数组的例子正是我需要听到的,这是一种方法,而不是将我的对象分割成许多条目……你的UserDoc、字段和“外键”数组的例子正是我需要听到的,这是一种方法,而不是将我的对象拆分为多个条目。。。