cau*_*tic 138 sql database nosql
您能否指出替代数据存储工具并提供充分的理由来使用它们而不是旧的关系数据库?在我看来,大多数应用程序很少使用SQL的全部功能 - 看看如何构建一个无SQL的应用程序会很有趣.
Mat*_*ard 148
文件系统中的纯文本文件
磁盘上的XML或JSON文件
电子表格/ CSV文件
Subversion(或类似的基于磁盘的版本控制系统)
Berkeley DB(基本上是基于磁盘的哈希表)
本地语言集合(存储在内存中或序列化在磁盘上)
自定义(手写)存储引擎
我不能声称对它们有任何了解,但您可能也想查看对象数据库系统.
Tri*_*cek 26
Matt Sheppard的答案很棒(mod up),但在考虑主轴时我会考虑这些因素:
CSV文件优于RDBMS的一个特殊优势是它们可以很容易地压缩并移动到几乎任何其他机器.我们进行大量数据传输,一切都很简单,我们只使用一个大的CSV文件,并且使用rsync等工具轻松编写脚本.为了减少大型CSV文件的重复,您可以使用YAML之类的东西.我不确定我会存储JSON或XML之类的东西,除非你有很重要的关系要求.
至于未提及的替代方案,不要打折Hadoop,它是MapReduce的开源实现.如果你有一个需要分析的松散结构化数据的TON,并且你想要在一个可以添加10台机器来处理数据处理的场景中,这应该可以正常工作.
例如,我开始尝试分析基本上所有在20台机器上记录的不同功能的时序数的性能.在尝试将所有内容都放在RDBMS中之后,我意识到在汇总数据后我真的不需要再次查询数据.而且,它只对我的聚合格式有用.因此,我保留日志文件,压缩,然后将聚合数据保留在数据库中.
注意我更习惯于用"大"尺码来思考.
自定义(手写)存储引擎/在所需用例中可能具有非常高的性能
如果您拥有大量数据集,则可以使用HDF(分层数据格式),而不是自己滚动数据集.
http://en.wikipedia.org/wiki/Hierarchical_Data_Format:
HDF支持多种不同的数据模型,包括多维数组,光栅图像和表格.
它也像文件系统一样分层,但数据存储在一个魔术二进制文件中.
HDF5是一个套件,可以管理极其庞大和复杂的数据集.
想想数PB的NASA/JPL遥感数据.