商店语言(ISO 639)作为数字

时间:2018-08-27 22:53:42

标签: javascript node.js mongodb mongoose

我正在使用MongoDB数据库,到目前为止,我已经将一些信息存储为数字而不是字符串,因为我认为这样做会更有效。例如,我存储跟随ISO 3166-1 numeric的国家和跟随ISO/IEC 5218的性别。但是到目前为止,我还没有找到类似的语言标准,ISO 639似乎没有匹配的数字代码列表。

什么是正确的方法?我应该只使用字符串代码吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您是数字的粉丝,则可以使用country calling codes,尽管它们“仅”代表国际电联成员(根据Wikipedia的193个国家/地区)。但是,嘿,他们有索马里和巴勒斯坦,所以这很好地暗示了这一点的全球性。

但是,将所有内容存储为编码格式(此处为数字)意味着在请求任何数据(转换表存储在RAM而非DB的ROM中)时,动态进行解码。可能是在CPU十分宝贵的服务器上,但是您可能已经在客户端上驱逐了该问题,从而使该过程中宝贵的,时间紧迫的服务器-客户端链接工作过度。

因此,在90年代,当40MB硬盘价格昂贵时,这可能很有趣。如今,存储数据的成本与处理数据的成本不是一成不变的……不算思考和实现转换所花费的时间。所有人都说“恕我直言”,我认为这种效率水平实际上会扼杀效率。 ;)

编辑:糟糕,我刚刚意识到我对国家/语言问题的误解(该动词甚至存在吗?)。您已经整理好的国家,我很糟糕。我不知道语言列表。但是,帖子的第二部分可能仍然有用...

答案 1 :(得分:0)

如果您追求原始性能和/或想要获得非常小的数据大小,我建议您使用IOC ISO-639-1/2中的三个字母(较高粒度)或两个字母(较低粒度)代码

据我所知,在我所知道的任何编程语言中都没有内置该标准的帮助程序或任何工具,因此您需要构建自己的翻译器(代码<->全名),但这应该是微不足道的。

正如其他人已经提到的那样,您必须自己评估与之相关的成本(例如,无法简单地查看数据并立即对其进行理解)。我个人确实建议保持数据大小较小,因为BSON解析和字符串操作与处理数字(或处理较短的字符串)相比非常昂贵。当处理小的数据集时,这不会产生明显的变化。但是,如果您需要处理数百万个文档,或者像这样的更多优化可能会成为关键任务。

相关问题