以预解析的二进制格式存储XML文档
我的应用程序需要存储大量类似XML的分层信息,并满足以下要求:以预解析的二进制格式存储XML文档,xml,file-format,hierarchical-data,binaryfiles,binary-data,Xml,File Format,Hierarchical Data,Binaryfiles,Binary Data,我的应用程序需要存储大量类似XML的分层信息,并满足以下要求: 快速阅读 最小内存消耗 键入数据而不仅仅是文本 对于满足这些目标的二进制格式有什么建议吗?其他应用程序需要读取存储的数据,还是只读取您的数据?它是否需要是“标准”格式 满足要求(1)和(2),尽管因为它只是XML信息模型的二进制表示,所以它与XML一样没有类型。但是,如果没有任何其他内容,可能就足以满足您的需要。其他应用程序需要读取存储的数据,还是只读取您的数据?它是否需要是“标准”格式 满足要求(1)和(2),尽管因为它只是XML
对于满足这些目标的二进制格式有什么建议吗?其他应用程序需要读取存储的数据,还是只读取您的数据?它是否需要是“标准”格式
满足要求(1)和(2),尽管因为它只是XML信息模型的二进制表示,所以它与XML一样没有类型。但是,如果没有任何其他内容,可能就足以满足您的需要。其他应用程序需要读取存储的数据,还是只读取您的数据?它是否需要是“标准”格式
满足要求(1)和(2),尽管因为它只是XML信息模型的二进制表示,所以它与XML一样没有类型。但是,如果没有其他东西的话,可能就足够满足您的需求了。您的需求中的细节太少,无法给出好的建议。例如,您是否可以自由选择存储介质?它是文件系统、数据库还是其他什么 “最小内存消耗”是什么意思?您是否在受约束的平台上运行?您必须与其他应用程序共享资源吗?如果您的计算机有4GB内存,1GB的内存占用是否足够小?您的数据是存储在内存中还是仅存储在您正在处理的部分中
如果平台是Java,我会从它的标准序列化开始,如果我对性能不满意,我会调查自定义序列化。您的需求中的细节太少,无法给出好的建议。例如,您是否可以自由选择存储介质?它是文件系统、数据库还是其他什么 “最小内存消耗”是什么意思?您是否在受约束的平台上运行?您必须与其他应用程序共享资源吗?如果您的计算机有4GB内存,1GB的内存占用是否足够小?您的数据是存储在内存中还是仅存储在您正在处理的部分中
如果平台是Java,我会从它的标准序列化开始,如果我对性能不满意,我会研究自定义序列化。如果可以讨论该格式,我建议使用JSON,而不是XML。JSON实际上比标准XML的加载和写入速度更快 关于JSON的更多信息:
如果可以讨论该格式,我建议使用JSON,而不是XML。JSON实际上比标准XML的加载和写入速度更快 关于JSON的更多信息:
您还可以将XML读入对象图并存储为Google协议缓冲区。这些设计非常高效。您还可以将XML读入对象图并存储为Google协议缓冲区。这些设计非常高效。您没有指定xml是否是一种格式要求,您只说它需要像xml一样具有层次结构 如果没有关于这类数据的更多细节,就很难给你很多建议。下面是一个小列表
- b-树有许多库支持多种语言的b-树存储格式。它们具有快速查找功能,并且本质上是分层的
- 谷歌的协议缓冲区。紧凑的存储优化,可通过有线传送。但不必作为存储格式进行优化。不过,它们是键入的,可能作为一种存储格式会做得很好
- 压缩文本格式。紧凑,并且取决于所选择的格式类型和分级性质。
- YAML(支持一些复杂的类型、层次结构、可读性)
- JSON(更少的类型支持、快速解析、分层、可读)
- b-树有许多库支持多种语言的b-树存储格式。它们具有快速查找功能,并且本质上是分层的
- 谷歌的协议缓冲区。紧凑的存储优化,可通过有线传送。但不必作为存储格式进行优化。不过,它们是键入的,可能作为一种存储格式会做得很好
- 压缩文本格式。紧凑,并且取决于所选择的格式类型和分级性质。
- YAML(支持一些复杂的类型、层次结构、可读性)
- JSON(更少的类型支持、快速解析、分层、可读)
- 维基百科对此问题的解释:
据推测,推荐的组织及其java和.net sdk可从以下网站下载:
xml是纯文本,但可用于表示序列化对象。
假设序列化程序正在将对象序列化为xml
您不应该尝试将对象转换为二进制流,因为您必须解决endian()和数据表示问题。但是,如果您坚持,您将需要使用XDR()实现其数据体系结构中立性
否则,由于库和SDK的可用性,您应该使用标准序列化程序将对象序列化为XML,然后将XML转换为二进制/压缩XML。然后通过从二进制xml反编译进行反序列化。维基百科对此问题的解释: 据推测,推荐的组织及其java和.net sdk可从以下网站下载: xml是纯文本,但可用于表示序列化对象。 假设序列化程序正在将对象序列化为xml 您不应该尝试将对象转换为二进制流,因为您必须解决endian()和数据表示问题。但是,如果您坚持,您将需要使用XDR()实现其数据体系结构中立性 否则,应该使用sta将对象序列化为XML