我有5个不同字段的数据(整数,字符串和大字符串的组合),我想把它放在某种平面文件容器中。我有成千上万的这样的条目,但我不需要任何类型的数据库(根本不需要迭代数据,不需要查询)。我检查的所有格式(XML,JSON,YAML)都需要每个条目的冗余字段,即使我的数据是结构化和同质的。像CSV这样的东西会很棒,除非我不能用逗号或新行作为分隔符。有没有你想要的格式?
数据格式示例:
id |时代|短串|网址|大描述
答案 0 :(得分:3)
类似于CSV的文件格式似乎很合适,当然你可以在你的文件中使用你想要的任何分隔符,你只需要“转义”所用的字符(如果它们存在于你正在存储的数据中)。 / p>
如果您不想转义单个字符,则可以使用不会输出您选择使用的任何分隔符的编码方案,例如Base64。
什么文件架构“最好”取决于很多情况。举个例子;在客户端和服务器之间发送较小的数据块时,我爱上了JSON。
虽然在平面文件架构中使用它之前我会考虑一次和两次,特别是如果有很多数据要包含在那里。
JSON在某种程度上是人类可读的,这对于调试很有用,但对于其他很多东西来说并不是那么好。
XML是一种很棒的格式,我喜欢它背后的想法虽然它太复杂了。
遵循相同想法的CSV文件或类似模式是我的5美分。
id |时代|短串|网址|大描述
| -> ; (delmiter)
id -> matching /^[0-9]+$/
epoch -> matching /^[0-9]+$/ (also known as unix timestamp)
url -> Urls should not contain raw ';',
(explicitly check before input)
short string -> Normalized
large desc. -> Normalized
上面标准化只是一种清理数据的方法,这样它就不会干扰我们模式的部分。
转义;\r\n
是我们需要做的工作,或者只是如前所述,使用编码算法,如Base64。
您应该记住您希望以何种顺序存储数据。如果您想更频繁地解析url
,那么epoch
最好将其尽可能地放在行的左侧。
如果您希望轻松/快速搜索,您可以/应该将所有“大型描述”存储在单独的文件中,并且只在需要时才获取/处理该数据。
答案 1 :(得分:3)
您可以使用JSON数组而不是对象。这样可以将噪音限制在最低限度。它可以是单个数组或数组数组,具体取决于数据的格式。
它不如XML那么冗长。不知道YAML。
例如,您可以:
[
[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"]
]
答案 2 :(得分:0)
您可以使用CSV并使用自己的分隔符,例如$%*,;
。否则你可以逃避文本中的逗号和新行。