Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 高效地将易于分析的数据存储在文件中?_Java_Logging_Storage - Fatal编程技术网

Java 高效地将易于分析的数据存储在文件中?

Java 高效地将易于分析的数据存储在文件中?,java,logging,storage,Java,Logging,Storage,我需要将易于解析的数据存储在一个文件中,作为数据库备份解决方案的替代方案(不需要讨论)。由于它将存储大量数据,因此最好是轻量级语法。这不一定是人类可读的,但应该是可分析的。请注意,将有多种类型的字段/列,其中一些可能会被使用,而另一些则不会 根据我在没有数据库的情况下的有限经验,我看到了几个选项,都有问题 CSV-我可以技术上做到这一点,它非常轻。然而,解析将是一个问题,如果我想添加一个列,那么它将很糟糕。多语言支持是不确定的,主要是人们自己的自定义解析器 XML——除了解析和开销之外,这在许

我需要将易于解析的数据存储在一个文件中,作为数据库备份解决方案的替代方案(不需要讨论)。由于它将存储大量数据,因此最好是轻量级语法。这不一定是人类可读的,但应该是可分析的。请注意,将有多种类型的字段/列,其中一些可能会被使用,而另一些则不会

根据我在没有数据库的情况下的有限经验,我看到了几个选项,都有问题

  • CSV-我可以技术上做到这一点,它非常轻。然而,解析将是一个问题,如果我想添加一个列,那么它将很糟糕。多语言支持是不确定的,主要是人们自己的自定义解析器
  • XML——除了解析和开销之外,这在许多方面都是完美的解决方案。这需要大量的标记,并且会生成一个巨大的文件,解析将非常耗费资源。然而,几乎每种语言都支持XML
  • JSON——这是一个折衷方案,但我真的不想这么做,因为它的语法很难理解,解析也很繁琐。语言支持是不确定的
因此,它们都有各自的缺点。但是,当试图寻求语言支持和较小的文件大小时,什么是最好的呢?这将允许您在应用程序中基本上嵌入“DB”,但不需要单独的DB后端

此外,如果您以后使用DB后端,那么切换应该相当容易

如果这不合适,我建议使用一种类似DBM的存储来查找键值,比如Berkely DB或tdb。

怎么样?这将允许您在应用程序中基本上嵌入“DB”,但不需要单独的DB后端

此外,如果您以后使用DB后端,那么切换应该相当容易


如果这不合适,我建议使用一种类似DBM的存储来查找键值,例如Berkely DB或tdb。

如果您只是使用所有这些格式的基础知识,那么所有解析器都很简单。如果CSV是一个选项,那么对于XML和JSON,您谈论的是名称/值对块,因此甚至不涉及递归结构。org支持几乎所有语言

也就是说

我看不出CSV有什么问题。如果人们写不好的解析器,那就太糟糕了。如果您担心兼容性,请采用Excel中的默认CSV模型。任何不能从Excel解析CSV的人在这个世界上都走不了多远。CSV中最薄弱的支持是嵌入的换行符和回车符。如果你的数据没有这个,那就不是问题。唯一的另一个问题是嵌入的报价单,这些报价单在CSV中转义。如果你也没有,那就更微不足道了

至于“添加一列”,所有这些都有问题。如果添加一列,则可以重写整个文件。我也不认为这是个大问题


如果您关心的是空间,那么CSV是最紧凑的,其次是JSON,然后是XML。所有生成的文件都无法轻松更新。对于数据中的任何更改,它们几乎都需要重写。CSV的优点是易于附加,因为它没有结束元素(如JSON和XML)。

如果您只是使用所有这些格式的基础,那么所有解析器都很简单。如果CSV是一个选项,那么对于XML和JSON,您谈论的是名称/值对块,因此甚至不涉及递归结构。org支持几乎所有语言

也就是说

我看不出CSV有什么问题。如果人们写不好的解析器,那就太糟糕了。如果您担心兼容性,请采用Excel中的默认CSV模型。任何不能从Excel解析CSV的人在这个世界上都走不了多远。CSV中最薄弱的支持是嵌入的换行符和回车符。如果你的数据没有这个,那就不是问题。唯一的另一个问题是嵌入的报价单,这些报价单在CSV中转义。如果你也没有,那就更微不足道了

至于“添加一列”,所有这些都有问题。如果添加一列,则可以重写整个文件。我也不认为这是个大问题


如果您关心的是空间,那么CSV是最紧凑的,其次是JSON,然后是XML。所有生成的文件都无法轻松更新。对于数据中的任何更改,它们几乎都需要重写。CSV的优点是易于附加,因为它没有结束元素(如JSON和XML)。

JSON可能是您最好的选择(它轻巧、解析速度更快,并且具有自描述性,因此您可以随着时间的推移添加新列)。你说的是parsable——你是说使用Java吗?Java有JSON库可以减轻大部分工作的痛苦。还有各种各样的轻量级内存数据库可以持久保存到文件中(如果“nota option”表示您不需要一个大的独立数据库)

JSON可能是您最好的选择(它轻量级、解析速度更快,并且具有自描述性,因此您可以随着时间的推移添加新的列)。你说的是parsable——你是说使用Java吗?Java有JSON库可以减轻大部分工作的痛苦。还有各种轻量级的内存数据库可以持久保存到文件中(如果“not a option”表示您不需要一个大的单独数据库)

如果这只是为了快速将一些数据记录到文件中,我发现制表符分隔的文件比CSV更容易解析,所以如果您要查找的是纯文本文件,我会选择它(当然,只要提要中没有制表符)。如果有固定大小的列,则可以使用固定长度的字段。这会更快,因为您可以搜索

如果非结构化数据可能需要一些分析,我会选择JSON

如果它是结构化数据,并且你想对它进行任何查询……我会去的 Num of fields Field Length Data Field Length Data 02 02 48 69 03 61 62 63
H Phone Numbers
C num(10) type
D 1234567890 Home
D 2223334444 Cell

H Addresses
C house(5) street postal(6) province
D 1234_ "some street" N1G5K6 Ontario