使用数字类型而不是字符串可以加快 CouchDB 的性能吗?
Does using number type instead of string speed up performance in CouchDB?
因为 CouchDb 以 json 格式存储文档,并且在每次文档更改后都会对视图进行索引。如果可能的话,如果使用数字而不是字符串,我会获得更好的性能吗?
目前我正在使用
string type
string syncedToSQL
string epidemicFrom
string group
string year
string app
我能做的是:
number type
number syncedToSQL
string epidemicFrom --remains as string
number group
number year
number app
视图是使用 group, year, app, type
个字段获取的。
使用数字类型对性能的影响可能可以忽略不计(我猜你说的是读取性能)。如有必要,尝试自己优化视图。总而言之,性能和可能的优化取决于您的具体用例(有多少文档、您拥有什么存储设备、您对性能与可读性的需求和期望)。
我建议你应该从一个简单、可读的解决方案和一些性能基准开始,然后尝试将年份 属性 更改为数字(你不必在那里抽象,因为年份本质上是数字)。如果您的基准测试带来性能优势,请更改其他类型,但我怀疑这样做是否值得,而且如果您对类型、组和应用程序进行数字编码,它会增加复杂性。
如果您需要这些类型的优化,请考虑使用 SQL 数据库作为替代。
因为 CouchDb 以 json 格式存储文档,并且在每次文档更改后都会对视图进行索引。如果可能的话,如果使用数字而不是字符串,我会获得更好的性能吗?
目前我正在使用
string type
string syncedToSQL
string epidemicFrom
string group
string year
string app
我能做的是:
number type
number syncedToSQL
string epidemicFrom --remains as string
number group
number year
number app
视图是使用 group, year, app, type
个字段获取的。
使用数字类型对性能的影响可能可以忽略不计(我猜你说的是读取性能)。如有必要,尝试自己优化视图。总而言之,性能和可能的优化取决于您的具体用例(有多少文档、您拥有什么存储设备、您对性能与可读性的需求和期望)。
我建议你应该从一个简单、可读的解决方案和一些性能基准开始,然后尝试将年份 属性 更改为数字(你不必在那里抽象,因为年份本质上是数字)。如果您的基准测试带来性能优势,请更改其他类型,但我怀疑这样做是否值得,而且如果您对类型、组和应用程序进行数字编码,它会增加复杂性。
如果您需要这些类型的优化,请考虑使用 SQL 数据库作为替代。