回答
我会在那里争论不是直接替换CSV文件。 CSV是一种平面文件索引导向格式。无论你用管道还是其他东西替换逗号都没关系。规则略有不同,这也是一样的。这就是说,我经常选择SQLite时,我的控制中的数据是。
使用SQLite始终适用于使用相同的工具,可以用作专门的商店或关系模型,对“独立的”RDBMS有“升级”计划,可免费提供DQL(这对我来说是一个很大的优势)等等。除非空间是真正的问题,或者不支持数据访问,为什么不呢? (现代的Firefox也使用SQLite)。 (还有一些对象数据库,比如DB4O,甚至更简单的键/值分层存储等等。不要说SQLite是获得微观/数据关系的唯一方法,嵌入式数据库。)
一个不好说的是,XML是需要特殊工具(sqlite/adapter)的。 XML虽然不是人性化程度最高的格式,但可以在记事本中进行编辑。另外,除了标记/数据本身,XML中没有额外的开销(碎片或结构),并且XML通常可以很好地压缩。也有很多库将整个对象图映射到XML(并因此保持关系),因此这可能是一个很好的功能。
其他格式,如JSON也在那里 - 但如果格式不透明,那么它不会真正影响XML(它更多的是工具支持问题)。
所以...... “这取决于”。
XML被设计为主流,relativey“轻量级”。 JSON是另一个流行的选择,但更适合对象建模而不是数据存储。
MySQL是一个不错的选择,如果你需要的关系查询功能。
这是所有关于用例。
我的经验法则是:如果两个数据之间存在依赖或关系,则使用SQLite;如果只是平面数据文件,请使用CSV(或其他“平面”格式)。最简单的方法就是最可靠的解决方案。
(注:确保CSV很好地形成。没有人喜欢不得不围绕糟糕的CSV实现进行攻击。)
看起来像YAML与XML等格式相比相对较小,但比JSON(它是超集)略胜一筹。这是我会考虑的另一个候选人。
如果不需要并发写入,HDF5是存储大型表格数据集的好选择。
在Python中,Pandas + PyTables非常容易使用。从熊猫documentation 例子:
In [259]: store = HDFStore('store.h5')
In [260]: print(store)
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
Empty
Objects can be written to the file just like adding key-value pairs to a dict:
In [261]: np.random.seed(1234)
In [262]: index = date_range('1/1/2000', periods=8)
In [263]: s = Series(randn(5), index=['a', 'b', 'c', 'd', 'e'])
In [264]: df = DataFrame(randn(8, 3), index=index,
.....: columns=['A', 'B', 'C'])
.....:
In [265]: wp = Panel(randn(2, 5, 4), items=['Item1', 'Item2'],
.....: major_axis=date_range('1/1/2000', periods=5),
.....: minor_axis=['A', 'B', 'C', 'D'])
.....:
# store.put('s', s) is an equivalent method
In [266]: store['s'] = s
In [267]: store['df'] = df
In [268]: store['wp'] = wp
# the type of stored data
In [269]: store.root.wp._v_attrs.pandas_type
Out[269]: 'wide'
In [270]: store
Out[270]:
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/df frame (shape->[8,3])
/s series (shape->[5])
/wp wide (shape->[2,5,4])
- 1. 什么是django-sentry的一些轻量级替代记录?
- 2. WebRequest“HEAD”轻量级替代品
- 3. 什么是一个很好的轻量级CSV查看器?
- 4. gSOAP是否有轻量级的替代品?
- 5. 什么是Coldfusion + Flex集成的主流CF替代品?
- 6. Bulkloader工具从AppEngine数据存储下载CSV的替代品是什么?
- 7. 什么是ocamlyacc/menhir解析简单表达式的轻量级替代方案?
- 8. 什么是轻量级事件?
- 9. 是否有一个轻量级的IIS媒体服务的开源替代品?
- 10. 什么是一些很好的替代序列化格式?
- 11. WinForms中的轻量级/重量级组件是什么?
- 12. 是否存在适用于iOS的轻量级替代方案?
- 13. 什么是iframe替代品?
- 14. 什么是APC替代品?
- 15. 什么是一些Linux兼容的MATLAB替代品?
- 16. 什么是TFS的一些ALM替代品?
- 17. 什么是一些很好的英特尔XDK替代品?
- 18. 什么是iPhone这些控件的替代品
- 19. 如何在数据库中存储轻量级格式(Textile,Markdown)?
- 20. 轻量级多语种替代JMX?
- 21. 什么是一些OpenID替代
- 22. 什么是一些pagerank替代方案?
- 23. Bootstrap的轻量级替换
- 24. System.Data.DataTable的轻量级替换
- 25. 轻量级只读替代DataTable用于存储来自SqlDataReader的数据?
- 26. 什么是VisualSVN存储库中的“格式”文件?
- 27. 什么是Facebook Fans API的替代品?
- 28. 什么是matlabFunction的好替代品?
- 29. 什么是UIAccessibilityVoiceOverStatusChanged的替代品
- 30. Selenium webdriver:什么是browserbot的替代品?
我想很多人会说,XML是非常沉重的。 JSON的设计是因为XML的重量... – 2011-04-20 05:54:44