我所在的项目非常倾向于使用.csv文件来存储数据。我发现使用.csv有很多问题,特别是在存储关系数据时。解析.csv通常是一个pain,特别是在使用即席列赋值时。
我提倡使用XML和最小的数据库,比如SQLite,但我正在寻找“更快、更好、更便宜”的替代方案。
.csv文件的其他一些“主流”轻量级替代方案是什么?
另外,CouchDB是怎么回事?在轻量级方面,它与SQLite相比如何?
编辑:我错过了。这个问题已经被问到了before。
发布于 2011-04-20 03:47:19
我认为CSV文件没有直接的替代品。CSV是一种面向索引的平面文件格式。将逗号替换为竖线或诸如此类都无关紧要。这是相同的事情,只是规则略有不同。
话虽如此,当数据在我的控制之下时,我经常选择SQLite。
使用SQLite总是借助于使用相同的工具,可以用作即席存储或关系模型,有“升级”计划到“独立”的关系型数据库管理系统,提供DQL“免费”(这对我来说是一个很大的优势),等等。除非空间是一个真正的问题,或者不支持数据访问,为什么不呢?(现代火狐也使用SQLite)。
(有许多对象数据库,比如DB4O --甚至更简单的键/值分层存储等。不用说,SQLite是在微型/嵌入式数据库中获取关系的唯一方法。)
比方说,XML的一个缺点是需要特殊的工具(sqlite/适配器)。XML虽然不是最友好的格式,但可以在记事本中很好地进行编辑。此外,除了标记/数据本身之外,XML中没有额外的开销(碎片或结构),并且XML通常非常适合压缩。还有许多库可以将整个对象图映射到XML (从而维护关系),因此这可能是一个很好的特性。
还有其他格式,比如JSON --但是如果这种格式是不透明的,那么它与XML的区别就不大了(更多的是工具支持的问题)。
所以..。“视情况而定”。
发布于 2011-04-20 05:22:40
与XML等格式相比,YAML看起来相对较小,但比JSON (它是一个超集)稍微更具描述性。这是另一个我会考虑的候选人。
发布于 2011-04-20 03:58:20
这一切都是关于用例的。
我的经验法则是:如果两段数据之间存在依赖关系或关系,则使用SQLite;如果只是平面数据文件,则使用CSV (或其他“平面”格式)。最简单有效的方法通常也是最可靠的解决方案。
(注意:确保CSV格式正确。没有人喜欢绕过糟糕的CSV实现。)
https://stackoverflow.com/questions/5721674
复制相似问题