我想将数据从SQL Server DB移动到Hbase / Cassandra等。如何决定使用哪个bigdata数据库?

时间:2016-05-12 05:33:41

标签: sql-server apache-spark cassandra hbase bigdata

我需要制定一个将数据从SQL Server DB移动到任何bigdata数据库的计划吗?我想到的一些问题是:

  1. 数据有多大?
  2. 此数据的预期增长率是多少?
  3. 经常运行什么样的查询?例如:查找,范围扫描,全扫描等
  4. 数据从源移动到目标的频率是多少?
  5. 任何人都可以帮助添加此调查问卷吗?

2 个答案:

答案 0 :(得分:3)

首先,How big is the data并不重要!这一点几乎无法用于决定使用哪个NoSQL DB,因为大多数NoSQL DB都是为了简化可扩展性而制作的。存储。所有重要的是 查询你发送 而不是有多少数据。 (当然除非你打算用它来存储和访问非常少量的数据,因为它们在许多NoSQL DB中会有点贵)你的第一个问题必须是为什么要考虑NoSQL? RDBMS无法处理它吗?

预期增长率是一个相当大的参数,但后来又不那么有效,因为大多数NOSQL数据库都支持存储大量数据(没有任何可扩展性问题)。

您列表中最重要的一个是What kind of queries will be run?

这是最重要的,因为 RDBMS将数据存储为tuples ,并且更容易选择元组&用较少量的数据输出它们。它在执行*查询时更快(作为其行方式存储)。但是来到 NoSQL,大多数数据库都是columnarColumn-oriented DBMS

面向行的系统:当数据插入表中时,会为其分配一个内部ID,即系统内部用于引用数据的rowid。在这种情况下,记录具有独立于用户指定的empid的连续rowid。

面向列的系统:面向列的数据库将列的所有值序列化,然后将下一列的值序列化,依此类推。

面向行的面向列的数据库之间的比较通常与给定工作负载的硬盘访问效率有关,因为搜索时间是与计算机中的其他瓶颈相比,这是非常长的。

How frequently the data will be moved/accessed?再次成为一个很好的问题,因为访问成本很高,并且在第一次查询时很少有NoSQL DB非常慢(例如:Hive)。

您可能会考虑的其他参数

  1. 是否需要更新行(表中的数据)? (Hive出现更新问题,通常需要删除并重新插入)

  2. 您为什么使用数据库? (搜索,派生关系或分析等)您将采用何种类型的操作想要对数据执行?  它需要关系搜索吗?喜欢Facebook Db(Presto)  它需要汇总吗?  它是否会被用于关联各个列以获得洞察力?(就像要进行的分析一样)

  3. 最后但非常重要,您是否希望将这些数据存储在HDFS(Hadoop distributed File System)作为文件或数据库的特定存储格式或其他任何内容?这很重要因为您的处理取决于您的数据存储方式,是否可以直接访问或需要查询调用,这可能是耗时的等等。

答案 1 :(得分:0)

更多指针

  1. 适合您要求的no-sql DB类型。即键值,文档,列族和图数据库
  2. CAP定理决定哪一个在一致性,可用性和分区容差中更为关键