Xml 保存结构化数据的最佳平面文件格式是什么?
我有5个不同字段的数据,包括整数、字符串和大字符串,我希望将其保存在某种平面文件容器中。我有成千上万个这样的条目,但我根本不需要任何类型的数据库,只需要遍历数据,不需要查询。我检查过的所有XML、JSON、YAML格式都要求每个条目都有冗余字段,即使我的数据是结构化的和同质的。类似CSV的东西会很棒,但我不能使用逗号或新行作为分隔符。有什么格式可以推荐吗 数据格式示例:Xml 保存结构化数据的最佳平面文件格式是什么?,xml,json,flat-file,Xml,Json,Flat File,我有5个不同字段的数据,包括整数、字符串和大字符串,我希望将其保存在某种平面文件容器中。我有成千上万个这样的条目,但我根本不需要任何类型的数据库,只需要遍历数据,不需要查询。我检查过的所有XML、JSON、YAML格式都要求每个条目都有冗余字段,即使我的数据是结构化的和同质的。类似CSV的东西会很棒,但我不能使用逗号或新行作为分隔符。有什么格式可以推荐吗 数据格式示例: id | epoch | short string | url | large description类似于CSV的文件格式似
id | epoch | short string | url | large description类似于CSV的文件格式似乎很合适,当然,您可以在文件中使用任何您想要的分隔符,如果存储的数据中存在所使用的字符,则只需对其进行转义即可 如果您不想转义单个字符,可以使用不输出您选择使用的任何分隔符的编码方案,例如 我爸爸比你爸爸强壮! 什么样的文件模式是最好的取决于许多情况。例如,;在客户端和服务器之间发送较小的数据块时,我非常喜欢JSON 尽管在平面文件模式中使用它之前,我会考虑一次和两次,尤其是当其中包含大量数据时 JSON在某种程度上是人类可读的,这对于调试来说是很好的,但对于其他很多方面来说并没有那么好 XML是一种很棒的格式,我喜欢它背后的想法,尽管它太复杂了 CSV文件或类似的模式遵循相同的想法是我的5美分 平面文件模式示例 id | epoch |短字符串| url |大描述 在上面的规范化只是指一种净化数据的方法,这样它就不会干扰我们模式的某些部分 逃逸\r\n是我们实现这一点所需要的,或者,正如前面提到的,只是使用一种编码算法,如Base64 您应该记住存储数据的顺序。如果您想更频繁地解析url,那么最好将其尽可能放在行的左侧
如果您想进行简单/快速的搜索,您可以/应该将所有大型描述存储在一个单独的文件中,并且只在需要时获取/处理这些数据。类似于CSV的文件格式似乎很合适,当然,您可以在文件中使用您想要的任何分隔符,如果所存储的数据中存在所使用的字符,则只需对其进行转义 如果您不想转义单个字符,可以使用不输出您选择使用的任何分隔符的编码方案,例如 我爸爸比你爸爸强壮! 什么样的文件模式是最好的取决于许多情况。例如,;在客户端和服务器之间发送较小的数据块时,我非常喜欢JSON 尽管在平面文件模式中使用它之前,我会考虑一次和两次,尤其是当其中包含大量数据时 JSON在某种程度上是人类可读的,这对于调试来说是很好的,但对于其他很多方面来说并没有那么好 XML是一种很棒的格式,我喜欢它背后的想法,尽管它太复杂了 CSV文件或类似的模式遵循相同的想法是我的5美分 平面文件模式示例 id | epoch |短字符串| url |大描述 在上面的规范化只是指一种净化数据的方法,这样它就不会干扰我们模式的某些部分 逃逸\r\n是我们实现这一点所需要的,或者,正如前面提到的,只是使用一种编码算法,如Base64 您应该记住存储数据的顺序。如果您想更频繁地解析url,那么最好将其尽可能放在行的左侧
如果您想进行简单/快速的搜索,您可以/应该将所有大型描述存储在单独的文件中,并且只在需要时获取/处理这些数据。您可以使用CSV并使用自己的分隔符,如$%*,;。否则,您可以转义文本中的逗号和新行。您可以使用CSV并使用自己的分隔符,如$%*,;。否则,您可以在文本中转义逗号和新行。您可以使用JSON数组而不是对象。这样可以将噪音限制在最低限度。它可以是单个数组或数组数组,具体取决于数据的格式 它不会像XML那样冗长。我不知道亚姆 例如,您可以:
[
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"]
]
可以使用JSON数组而不是对象。这样可以将噪音限制在最低限度。它可以是单个数组或数组数组,具体取决于数据的格式 它不会像XML那样冗长。我不知道亚姆 < p> 例如,您可以:
[
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"],
[123, 123456789, "short string", "http://url", "large ... description"]
]
我有一个问题,如果你没有对你的数据进行分类,那么每次你需要扫描并从元素1加载到元素Zth?你能举一个你的数据格式的例子给我们一个更具体的解决方案吗?@ajreal-yep我扫描这些数据大概总共5次左右,以后再也不用了。@lkuty刚刚把它添加到我的帖子中。大型描述约300字。可能不包含换行符。我有个问题,如果你没有对你的数据进行分类,那么每次你需要扫描并从元素1加载到元素Zth时?你能给我们举一个数据格式的例子给你一个更具体的解决方案吗?@ajreal-yep我扫描这些数据大概总共5次左右,以后再也不用了。@lkuty刚刚在我的帖子中添加了这个。大型描述约300字。可能不包含换行符。考虑到我的数据集最多为10兆字节,数万行,这不是个坏主意。我只是不习惯使用随机分隔符和转义字符。但是我可能应该忘记这一点。@oxuser通过使用文章中提到/链接的Base64之类的编码算法来规范数据,这样您就不必担心分隔符冲突之类的问题了。哦,很好,我从来都不知道这一点。Base64通常用于什么?像这样的目的?@oxuser嗯,不是真的用于这样的目的。。尽管这是一种简单的方法,可以控制用于表示任意字节序列的字符。Base64仅由可打印字符组成,通常用于表示原始二进制数据。bae64非常流行的用例示例:@oxuser请将答案标记为已接受,除非您正在寻找替代答案?然后更新你的问题,现在让我来帮你。谢谢。考虑到我的数据集最多10兆字节,数万行,这不是一个坏主意。我只是不习惯使用随机分隔符和转义字符。但是我可能应该忘记这一点。@oxuser通过使用文章中提到/链接的Base64之类的编码算法来规范数据,这样您就不必担心分隔符冲突之类的问题了。哦,很好,我从来都不知道这一点。Base64通常用于什么?像这样的目的?@oxuser嗯,不是真的用于这样的目的。。尽管这是一种简单的方法,可以控制用于表示任意字节序列的字符。Base64仅由可打印字符组成,通常用于表示原始二进制数据。bae64非常流行的用例示例:@oxuser请将答案标记为已接受,除非您正在寻找替代答案?然后更新你的问题,现在让我来帮你。谢谢。我的字段并非都是相同类型的int,strings,所以我可以将它们全部存储在JSON数组中吗?它会是什么样子?JSON可以解决这个问题,没问题。阵列不必是均匀的。我喜欢这个想法。使用JSON的方法有点不靠谱,但很有意义。请注意,在我的示例中,数组值的类型不同,但每个数组的位置都相同:第一个是id,第二个是历元。。。就像你的例子一样。如果位置可能也不同,那么您需要一种方法来识别它们。在这种情况下,JSON对象可能是我的选择。不过,实现/使用适当的JSON解析器要比解析简单的CSV复杂得多。如果你不打算使用完整的json特性,比如表示对象等,那么真的不需要这样的方案。我的字段不是所有的int,strings类型都相同,那么我可以将它们全部存储在json数组中吗?它会是什么样子?JSON可以解决这个问题,没问题。阵列不必是均匀的。我喜欢这个想法。使用JSON的方法有点不靠谱,但很有意义。请注意,在我的示例中,数组值的类型不同,但每个数组的位置都相同:第一个是id,第二个是历元。。。就像你的例子一样。如果位置可能也不同,那么您需要一种方法来识别它们。在这种情况下,JSON对象可能是我的选择。不过,实现/使用适当的JSON解析器要比解析简单的CSV复杂得多。如果你不打算使用完整的json特性,比如表示对象等等,那么真的不需要这样的方案。