我想将数据从 SQL 服务器数据库移动到 Hbase/Cassandra 等。如何决定使用哪个大数据数据库?

I want to move data from SQL server DB to Hbase/Cassandra etc.. How to decide which bigdata database to use?

我需要制定计划将数据从 SQL 服务器数据库移动到任何大数据数据库?我想到的一些问题是:

  1. 数据有多大?
  2. 此数据的预期增长率是多少?
  3. 什么样的查询会运行频繁?例如:查找、范围扫描、全扫描等
  4. 数据从源移动到目标的频率如何?

任何人都可以帮助添加此问卷吗?

更多的指针

  1. 无-sql 符合您要求的数据库类型。即键值、文档、列族和图形数据库
  2. 决定一致性、可用性和分区容忍度中哪个更重要的CAP定理

首先,How big is the data没关系!这一点几乎不能用来决定使用哪个 NoSQL 数据库,因为大多数 NoSQL 数据库都是为了易于扩展和存储而设计的。因此,重要的是 您触发的查询 而不是那里有多少数据。 (当然除非您打算使用它来存储和访问非常少量的数据,因为它们在许多 NoSQL 数据库中会有点贵)您的第一个问题必须是为什么要考虑 NoSQL? RDBMS 不能处理吗?

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

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

这最重要,因为 RDBMS 将数据存储为 tuples 并且它更容易 select 元组并用较小的数据量输出它们。它在执行 * 查询时速度更快(作为其按行存储)。但是对于 NoSQL,大多数数据库都是 columnar or Column-oriented DBMS

Row-oriented system : 当数据被插入table时,它被分配了一个内部ID,系统内部使用的rowid来引用到数据。在这种情况下,记录具有独立于用户分配的 empid 的顺序 rowid。

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

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

How frequently the data will be moved/accessed? 又是一个好问题,因为访问成本很高,而且很少有 NoSQL 数据库在第一次执行查询时非常慢(例如:Hive)。

您可以考虑的其他参数是 :

  1. 是否需要更新行(table中的数据)?(Hive 有问题随着更新,你通常需要删除并重新插入)

  2. 您为什么使用数据库? (搜索、推导关系或分析, etc) 您希望对数据执行什么类型的操作? 它需要关系搜索吗?就像 Facebook Db(Presto) 的情况一样 它需要聚合吗? 它将用于关联各种列以得出见解吗?(如要完成的分析)

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