没有针对这些要求的SQL数据存储或RDBMS数据存储?

时间:2015-08-06 18:26:40

标签: rdbms datastore nosql

我的数据集要求为其他记录不需要的特定记录集动态添加更多字段。

HBase / No Sql系统为我提供了使用动态模式的灵活性。但我还要求以标准化方式存储数据以节省更多磁盘空间。大多数情况下,我对数据存储的操作将是并行写入和基于唯一键的读取。我还要求每天都倾销掉整个数据集。写入本质上不是事务性的,数据存储应该能够支持聚合以进行分析。

记录数量在1M到1000万之间,总大小从500 MB到10GB。我们还希望通过使用SQL作为查询语言来打开数据以便于查询。

根据这些要求,我发现基于SQL的系统不满足其中的一部分,而基于SQL的系统则满足其他部分。

根据这些要求,我的担忧是,

1。动态架构: 基于No SQL的系统很好地支持动态模式。这并不意味着基于SQL的系统无法支持它。仍然可以将动态数据规范化为另一个表,并使用唯一标识符从父表中引用该表来减少父表中的Null条目数。

2。基于SQL的查询语言: RDBMS就是为此而设的。但仍然没有像Hbase这样的SQL系统有Hive,Phoenix来解决这个问题。在这种情况下有没有明显的赢家?

第3。分析支持: 没有SQL系统非常适合基于OLAP的操作。 RDBMS系统非常适合基于OLTP的操作。这里的要求是执行更多OLAP操作。在RDBMS系统中缺少哪些执行OLAP操作效率不高?

4。数据大小 如前所述,数据大小相对较小,可以放入一台机器中。以下是基于RDBMS的系统,比如我的sql是胜利者,因为它们与No SQL对应物相比容易设置?除了简单的设置之外,还有其他理由在这种情况下更喜欢RDBMS吗?

5。支持存储二进制数据 除了上述要求之外,我们还希望将数据对象存储在数据存储中。基于RDBMS的系统提供blob来支持这一点。但是我一次又一次地读到,Blob对于数据的频繁更改效率不高,对blob进行清理的开销更多,等等。所以在这种情况下,没有基于SQL的系统如hbase如何处理它比他们更好SQL对应物?

6。每天倾倒整个数据集 在基于RDBMS的系统和基于No SQL的系统中,我们都在尝试节省更多空间,并且我们不关心转储操作需要花费额外的时间来进行非规范化。在这种情况下,什么是赢家?

基于当前用例的这些主要因素,我发现在基于RDBMS的系统与基于无SQL的系统之间找到一个明显的赢家有点困难。您对这些PLZ的输入..

谢谢, 斯利拉姆

1 个答案:

答案 0 :(得分:1)

这不是问题。这是一组问题。要回答所有这些问题,我需要写一本我不打算做的书。结果,我将总结我的想法。假设您正在使用RDBMS,并且您有一个表foo可能有一些自定义字段。在不将这些列添加到foo的情况下支持它们的RDBMS解决方案是创建一个表foo_custom_fields(id,name)来保存所有可能的自定义字段并具有foo_custom_field_values(id,foo_custom_field_id,foo_id,value)。因此,与NoSQL一样,您可以使用RDBMS实现大致相同的功能。 NoSQL非常灵活,这是它的优势。这两种情况都有更多的利弊,但我相信:

如果您需要编写SQL,请不要使用NoSQL。