我需要制定一个计划将数据从 SQL Server 数据库移动到任何大数据数据库吗?我想到的一些问题是:
- 数据有多大?
- 该数据的预期增长率是多少?
- 哪些类型的查询会经常运行?例如:查找、范围扫描、全扫描等
- 数据从源移动到目标的频率如何?
任何人都可以帮忙添加此调查问卷吗?
请您参考如下方法:
首先,数据有多大
并不重要!这一点几乎不能用来决定使用哪个 NoSQL DB,因为大多数 NoSQL DB 都是为了易于扩展和存储而设计的。因此,重要的是您触发的查询,而不是有多少数据。 (当然,除非您打算将其用于存储和访问非常少量的数据,因为它们在许多 NoSQL 数据库中会有点昂贵)您的第一个问题一定是为什么考虑 NoSQL? RDBMS 无法处理吗?
预期增长率是一个相当大的参数,但同样不是那么有效,因为大多数 NOSQL 数据库支持存储大量数据(没有任何可扩展性问题)。
列表中最重要的一项是将运行哪种查询?
这非常重要,因为RDBMS 将数据存储为元组
,并且更容易选择元组并使用较小的数据量输出它们。它执行 *
查询的速度更快(作为其行存储)。但对于 NoSQL,大多数数据库都是 columnar或Column-oriented DBMS 。
面向行的系统:当数据插入表中时,它会被分配一个内部ID,即系统内部使用的rowid来引用数据。在这种情况下,记录具有独立于用户分配的 empid 的连续 rowid。
面向列的系统:面向列的数据库将一列的所有值序列化在一起,然后是下一列的值,依此类推。
面向行和面向列数据库之间的比较通常与给定工作负载的硬盘访问效率有关,因为寻道时间为与计算机中的其他瓶颈相比,它的时间长得令人难以置信。
数据移动/访问的频率如何?
又是一个好问题,因为访问成本高昂,而且很少有 NoSQL 数据库在第一次查询时速度非常慢(例如:Hive) .
您可以考虑的其他参数是:
是否需要更新行(表中的数据)?(Hive更新有问题,通常需要删除并重新插入)(Hive更新有问题,通常需要删除并重新插入) p>
您为什么使用数据库?(搜索、导出关系或分析等)您会执行什么类型的操作想要对数据执行操作? 是否需要关系搜索?就像 Facebook Db(Presto) 的情况一样 是否需要聚合? 它将用于关联各个列以获取见解吗?(例如要完成的分析)
最后但非常重要的一个,您想将该数据存储在 HDFS(Hadoop distributed File System) 上吗?作为文件或数据库的特定存储格式或其他什么?这很重要,因为您的处理取决于数据的存储方式、是否可以直接访问或需要可能耗时的查询调用等。