我已经测试了像CouchDB,MongoDB和Cassandra这样的NoSQL数据库,并观察到相对于插入的键值对吸收非常大量的驱动器空间的趋势。 在比较CouchDB和MySQL无模式数据库时,CouchDB比MySQL消耗更多的驱动器空间。 我知道默认情况下键值DB是版本控制并且有很长的uuid并且需要关键优化 - 比较是MySQL中大约15万行和NoSQL DB列出的1-5万个文档。
我的问题是:是否存在具有良好压缩/压缩数据的NoSQL? 这样我可以拥有NoSQL数据库,其大小接近5GB而不是50GB?
答案 0 :(得分:4)
磁盘空间是目前最便宜的资源,所以如果你可以用较少的搜索或更少的CPU来交易,那么这是一个很好的交易。这就是卡桑德拉所做的。
答案 1 :(得分:2)
MongoDB具有“数据库修复”功能,该功能也执行压缩。但是,在DB运行时不会发生这样的压缩。
但是如果数据库空间是一个严重的问题,那么尝试设置一个MongoDB主/从对。由于数据需要压缩,在从站上运行修复,允许它“赶上”然后将其切换。您现在可以安全地压缩母版。
但我必须回应 jbellis 的评论:您可能需要更多空间,而且大多数这些产品都假设磁盘空间(相对)便宜。如果磁盘空间非常紧张,那么你会发现MongoDB的大小合理,但是它很难与表格CSV数据竞争。
这样想,更节省空间?
显然,每次重复字段名称时,JSON会更长。这里唯一的例外是一个包含100列的CSV文件,每行只填充少量几列。 (但这可能不是你的数据)
答案 2 :(得分:1)
您是在检查“文件长度”还是实际分配大小?
许多数据库稀疏地分配文件结构,它们的“长度”远大于它们的磁盘大小。
答案 3 :(得分:1)
我认为问题是关键。 CouchDB将其数据存储在b树中。 UUID - 密钥是您需要大量磁盘空间的原因。 B-tree存储数据紧凑的自然文件UUID。尝试找到一个更适合b树的密钥。