**已关闭。**此问题是在寻求有关书籍、工具、软件库等内容的建议。它不符合Stack Overflow guidelines。它目前不接受回答。
我们不允许提问以寻求书籍、工具、软件库等方面的建议。您可以编辑问题,以便使用事实和引文回答。
14天前关闭
Improve this question的
存储400k行大型python ruam yaml层次结构数据而不丢失数据类型的最佳实践是什么?哪种数据库或流程是此类用例的首选?范围是将数据存储在数据库中以并行进行更改,并通过防止值类型存储最终相同的ruaml yaml文件来导出数据。背景是我的问题,目前加载和处理这么大的文件是不性能。
2条答案
按热度按时间gfttwv5a1#
我不会为
ruamel.yaml
这么慢而道歉。在加载和转储的各个阶段之间,复制字符串(仍然)有很多开销。此外,在转储后加载标量,以确保保留相同的类型/不会抛出错误(如果不是,标量将被引用)。我切换到使用
msgpack
的数据,我不需要阅读/编辑,有时使用自动YAML到msgpack转换,如果YAML文档是新的。当你阅读的次数比更新YAML文件的次数多的时候,这很好用。字符串
其给出:
型
msgpack
允许您定义自己的类型,因此这就是datetime.date
的往返方式。在我的MacBook M1上使用400 k YAML文件的一些计时:
型
其给出:
型
在某些情况下,我将msgpack片段作为值存储在
lmdb
数据库中,但对于400 k的YAML文件,这是IMO的过度。(生成的)文件
input.yaml
的前几行:型
jm81lzqq2#
一种选择是使用NoSQL数据库,例如MongoDB或Apache Cassandra,它们可以处理大量数据并提供灵活的模式支持。NoSQL数据库可以以更自然的格式存储分层结构,例如嵌套文档或键值对。