Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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
Php 缩短MongoDB数据库中的属性名称是一个好主意吗?_Php_Python_Database_Mongodb - Fatal编程技术网

Php 缩短MongoDB数据库中的属性名称是一个好主意吗?

Php 缩短MongoDB数据库中的属性名称是一个好主意吗?,php,python,database,mongodb,Php,Python,Database,Mongodb,有时,我们在DB中有许多字段和大型数据集(我使用的是mongoDB)。有一件事在我脑海中浮现,就是通过在数据库中保留shortenname来在数据库中保存一些字节。 像 年份:年 月份:mn isSameCity:isSmCt 那么,这种方法是好是坏。或者,这取决于案例基础 请指导我。MongoDB的一个常见性能优化策略是在文档中使用短字段名 也就是说,不是创建这样的文档 {名字:“乔恩”,姓氏:“海曼”} 使用较短的字段名,使文档看起来像 {fn:“乔恩”,ln:“海曼”} 由于MongoDB

有时,我们在DB中有许多字段和大型数据集(我使用的是mongoDB)。有一件事在我脑海中浮现,就是通过在数据库中保留shortenname来在数据库中保存一些字节。 像

年份:年

月份:mn

isSameCity:isSmCt

那么,这种方法是好是坏。或者,这取决于案例基础


请指导我。

MongoDB的一个常见性能优化策略是在文档中使用短字段名

也就是说,不是创建这样的文档

{名字:“乔恩”,姓氏:“海曼”}

使用较短的字段名,使文档看起来像

{fn:“乔恩”,ln:“海曼”}

由于MongoDB没有列或预定义模式的概念,因此这种结构很有优势,因为数据库中的每个文档上都有重复的字段名。如果您有一百万个文档,每个文档上都有一个“first_name”字段,那么您将该字符串存储一百万次。这会增加每个文档的空间,这最终会影响内存中可以容纳多少文档,并且在很大程度上可能会略微影响性能,因为MongoDB在读取文档时必须将文档映射到内存中


参考

MongoDB的一个常见性能优化策略是在文档中使用短字段名

也就是说,不是创建这样的文档

{名字:“乔恩”,姓氏:“海曼”}

使用较短的字段名,使文档看起来像

{fn:“乔恩”,ln:“海曼”}

由于MongoDB没有列或预定义模式的概念,因此这种结构很有优势,因为数据库中的每个文档上都有重复的字段名。如果您有一百万个文档,每个文档上都有一个“first_name”字段,那么您将该字符串存储一百万次。这会增加每个文档的空间,这最终会影响内存中可以容纳多少文档,并且在很大程度上可能会略微影响性能,因为MongoDB在读取文档时必须将文档映射到内存中

引用:

过早优化是编程中所有罪恶(或至少大部分)的根源

然而,构建您的应用程序似乎是最明智、最可维护和最合乎逻辑的。然后,如果您有性能或存储问题,请处理影响最大的问题,直到性能令人满意,或者收益递减定律意味着没有必要进一步优化

如果您不确定特定设计决策的影响(如较长的物业名称),请创建一个原型来测试各种假设(如“较短的物业名称会节省大量空间吗”)。不要期望测试的结果是决定性的,但是它可能会教给你一些你没想到会学到的东西

引用自:

引用:

过早优化是编程中所有罪恶(或至少大部分)的根源

然而,构建您的应用程序似乎是最明智、最可维护和最合乎逻辑的。然后,如果您有性能或存储问题,请处理影响最大的问题,直到性能令人满意,或者收益递减定律意味着没有必要进一步优化

如果您不确定特定设计决策的影响(如较长的物业名称),请创建一个原型来测试各种假设(如“较短的物业名称会节省大量空间吗”)。不要期望测试的结果是决定性的,但是它可能会教给你一些你没想到会学到的东西

参考:

在设计数据模型时,可以避免使用长名称属性(或“异常长名称属性”)。在我之前的组织中,我们测试了保留短名称属性策略,例如,组织定义的4-5个字母编码字符串,例如:

  • 名字=FSTNM
  • 姓氏=LSTNM
  • 月度损益百分比=MTPCT
  • 同比销售预测=年销售额,依此类推……)
  • 虽然我们观察到查询性能有所提高,这主要是由于通过网络传输的数据的大小减少,或者(因为我们将JAVA与MongoDB一起使用)MongoDB文档/JAVA映射堆空间中“键”的长度减少,但总体性能提高不到15%

    在我个人看来,这是一个微观优化,需要为每个数据模型维护/设计一个额外的数据属性字典管理系统,这是一个额外的成本(巨大的头痛)。在调试应用程序/回答客户查询时,要求该系统具有全组织的透明度

    如果您发现使用此策略可将性能提高20%对您有利,可能是时候扩展您的MongoDB服务器/选择其他数据建模/查询策略,或者选择其他数据库。

    长名称属性(或“异常长名称属性”)在设计数据模型时可以避免。在我之前的组织中,我们测试了保留短名称属性策略,例如,组织定义的4-5个字母编码字符串,例如:

  • 名字=FSTNM
  • 姓氏=LSTNM
  • 月度损益百分比=MTPCT
  • 同比销售预测=年销售额,依此类推……)
  • 虽然我们观察到查询性能有所提高,这主要是由于通过网络传输的数据的大小减少,或者(因为我们将JAVA与MongoDB一起使用)MongoDB文档/JAVA映射堆空间中“键”的长度减少,但总体性能提高不到15%

    在我个人看来,这是一个微优化,需要额外的成本(巨大的头痛)来维护/设计一个附加组件a