代码之家  ›  专栏  ›  技术社区  ›  Kajuna

将语言(ISO 639)存储为数字

  •  0
  • Kajuna  · 技术社区  · 7 年前

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

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

    谢谢!

    2 回复  |  直到 6 年前
        1
  •  0
  •   dnickless    6 年前

    如果您追求原始性能和/或想要实现非常小的数据大小,我建议您使用来自 IOC ISO-639-1/2 .

    据我所知,我所知道的任何编程语言中都没有这个标准的帮助者或任何东西,因此您需要构建自己的翻译程序(code<->全名),不过,这应该是微不足道的。

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

        2
  •  1
  •   Stock Overflaw    6 年前

    如果你喜欢数字,你可以用 country calling codes 尽管他们“只”代表国际电联成员国(根据维基百科,193个国家)。但是,他们有索马里和巴勒斯坦,所以这是一个关于全球局势的好提示。

    但是,以编码格式(这里是数字)存储所有内容意味着当请求任何数据块时(翻译表存储在RAM中,而不是数据库的ROM中),解码步骤是动态的。可能是在CPU很宝贵的服务器上,但您可能已经在客户端上驱逐了该问题,从而在进程中过度工作宝贵的、时间关键的服务器客户端链接。

    所以,在90年代,当一个40MB的硬盘很贵的时候,这可能是有趣的。今天,存储数据的成本与处理数据的成本不在1…不计算您思考和实现转换所需的时间。所有人都说“imho”,我认为这种效率水平实际上会扼杀效率。;)

    编辑 哦,我刚刚意识到我错了(这个动词真的存在吗?)国家/语言问题。你已经解决的国家,我的错。我不知道有多少种语言。然而,文章的第二部分可能仍然是相关的…