我想将数据从sqlserverdb移动到hbase/cassandra等如何决定使用哪个bigdata数据库?

pw136qt2  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(362)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

四年前关门了。
改进这个问题
我需要制定一个计划,将数据从SQLServerDB移动到任何bigdata数据库?我想到的一些问题是:
数据有多大?
这个数据的预期增长率是多少?
什么样的查询将经常运行?例如:查找、范围扫描、全扫描等
数据从源移动到目标的频率如何?
有人能帮我补充一下这个问卷吗?

lyr7nygr

lyr7nygr1#

再给点提示
没有适合您需求的sql db类型。i、 e.键值、文档、列族和图形数据库
cap定理来决定在一致性、可用性和分区容限中哪个更重要

ctehm74n

ctehm74n2#

首先, How big is the data 没关系!这一点几乎不能用来决定使用哪个nosqldb,因为大多数nosqldb都是为了便于扩展和存储而设计的。所以,最重要的是你的查询,而不是有多少数据(当然,除非您打算使用它来存储和访问非常少量的数据,因为在许多nosql数据库中它们会有点贵),否则您的第一个问题必须是为什么要考虑nosql?rdbms不能处理吗?
预期增长率是一个相当重要的参数,但也不是那么有效,因为大多数nosqldbs都支持存储大量数据(没有任何可伸缩性问题)。
你名单上最重要的是 What kind of queries will be run? 这一点最为重要,因为rdbms将数据存储为 tuples 而且更容易选择元组并用较少的数据量输出它们。它的执行速度更快 * 查询(作为其行存储)。但是对于nosql,大多数数据库都是列式或面向列的数据库。
面向行的系统:当数据插入到表中时,会为其分配一个内部id,即系统内部用来引用数据的rowid。在这种情况下,记录具有独立于用户指定的empid的连续rowid。
面向列的系统:面向列的数据库将一列的所有值序列化在一起,然后将下一列的值序列化,依此类推。
面向行和面向列的数据库之间的比较通常与给定工作负载的硬盘访问效率有关,因为与计算机中的其他瓶颈相比,寻道时间非常长。 How frequently the data will be moved/accessed? 这也是一个很好的问题,因为访问成本很高,而且很少有nosql数据库在第一次触发查询时非常慢(例如:hive)。
您可以考虑的其他参数包括:
是否需要更新行(表中的数据)(配置单元在更新时出现问题,通常必须删除并再次插入)
为什么要使用数据库?(搜索、导出关系或分析等)您希望对数据执行什么类型的操作?它需要关系搜索吗?就像facebook db(presto)一样,它是否需要聚合?它是否会被用来关联不同的专栏以获得见解?(比如要做的分析)
最后一个非常重要的问题是,您希望将这些数据以文件的形式存储在hdfs(hadoop分布式文件系统)上,还是存储在db的特定存储格式上,或者其他什么?这一点很重要,因为处理过程取决于数据的存储方式,数据是否可以直接访问,或者是否需要一个查询调用(这可能会很耗时),等等。

相关问题