当前位置: 首页 > 科技观察

企业如何选择数据库?DynamoDB、Hadoop和MongoDB比较

时间:2023-03-15 16:23:00 科技观察

用户如何选择最符合其当前业务需求的数据库,通常取决于其开发团队的技术和所使用的应用程序。了解哪种数据库系统最适合用户公司当前和未来的需求非常重要。数据库在所有行业和组织中都发挥着至关重要的作用。因此,能否从需求和价格两个维度选择出最合适的数据库系统,可能成为项目成败和战略的分水岭。随着公司存储数据的方式不断扩展,本文旨在比较公司使用的一些更现代的数据库系统——了解DynamoDB、Hadoop和MongoDB可以提供什么将帮助用户就他们的业务模型做出更好的决策。所有这些系统都不一定可以互换,在某些情况下,更像是比较苹果和橘子。但是,由于它们通常属于NoSQL的范畴,因此通常将这些系统归为一类进行比较。因此,我们首先描述每个系统,然后比较它们。什么是DynamoDB?DynamoDB是Amazon精心打造的NoSQL数据库服务,可以作为AmazonWebServices(AWS)产品组合的一部分使用。DynamoDB起源于Dynamo系统——一个高可用的键值(key-value)存储系统。亚马逊构建该系统是为了避免像2004年假日电子商务促销那样的系统中断。最初,由于Dynamo操作的高度复杂性以及平衡数据一致性、性能、查询灵活性和可靠性的需要,即使在Amazon内部也只有少数团队采用了Dynamo系统。而在这期间,Amazon的开发者更喜欢使用SimpleDBNoSQL数据库,可以方便用户数据库的管理。但是由于SimpleDB的一些局限性,最终限制了它的使用场景。DynamoDB于2012年推出,是AWS的一项数据库服务,旨在打破Dynamo和SimpleDB的局限性。什么是Hadoop?ApacheHadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。Hadoop本身的目的是在应用层检测和处理故障,而不依赖硬件提供高可用性。在更深层次上,Hadoop实际上是模块化的。这意味着用户可以替换它的任何部分并构建各种软件工具。这个过程产生了一个非常灵活、高效和健壮的架构。什么是MongoDB?MongoDB是由MongoDBInc创建的非表格和开放式数据库。发起者最初专注于创建一个完全使用开源的平台,但为了获得对现有数据库使用基础的访问权以满足他们在云中构建服务的需求,他们开始创建个人数据库系统。意识到创建数据库软件的可能性后,团队将注意力转移到创建MongoDB上。MongoDB于2009年发布,旨在创建一个技术基础,使开发团队能够获得分布式系统设计、文档数据模型和统一的体验。2016年,MongoDB推出云托管数据库服务MongoDBAtlas。MongoDBAtlas提供真正的MongoDB服务,将用户从特定的操作任务中解放出来。现在是差异。易于使用、设置和管理DynamoDBDynamoDB的托管服务将用户从底层基础设施中解放出来,并且仅通过远程端点与数据库交互。用户在使用DynamoDB时无需担心操作问题或其他硬件要求,这使得DynamoDB非常易于使用。HadoopHadoop在设置方面有多种选择,不需要抽象(abstraction,译注:数据抽象是一种只向用户暴露接口,隐藏具体实现细节的机制。),只有命令行(command-line)可以实施ManageHadoop。当然,这意味着用户需要熟悉命令行并知道如何设置硬件。由于其复杂性,一些公司(如Cloudera)围绕Hadoop开发了产品,以帮助用户减少管理Hadoop的复杂工作。如果做得好,使用上述第三方公司的产品可以为用户节省数千美元的人员成本(因为雇用一名Hadoop工程师通常要花费150,000美元以上)。MongoDBMongoDB不是SaaS服务,它是最容易直接管理的数据系统之一。用户可以轻松下载并快速开始与MongoDB交互。质量支持DynamoDBDynamoDB用户可以通过社区支持论坛、企业支持、ServerFault和StackOverflow获得质量支持。DynamoDB社区提供示例应用程序、驱动程序、扩展和支持工具。另外,由于DynamoDB是AWS的一部分,用户可以根据自己的业务规模直接获得亚马逊的进一步支持。许多Hadoop公司为Hadoop提供商业服务,提供专业的技术支持。而Hadoop则由来已久,已经拥有多个社区支持论坛、支持工具、课程支持,帮助用户提高使用该系统进行管理和开发的能力。就个人而言,我们认为Hadoop可能是那些如果用户使用原始Hadoop软件就很难获得高质量支持的系统之一。但是,鉴于有这么多第三方的参与,我们认为大多数大公司都可以考虑将Hadoop作为一个数据存储系统。MongoDBMongoDB提供社区支持论坛、ServerFault和StackOverflow。它的用户还可以获得24/7企业支持。此外,MongoDB社区还组织活动、有关MongoDB大学、用户组和网络研讨会的信息。数据库结构DynamoDBDynamoDB以属性、项和表为核心部分供用户经常使用。一个表是指很多项,一个项是属性的组合。此外,DynamoDB使用主键来专门标识表中的各个项目。使用二级索引以获得更大的查询灵活性。MongoDBMongoDB在存储无模式数据时使用类似JSON的文档文件。MongoDB中的文档集合不包含可能因文档而异的预定义列和结构。关系数据库中MongoDB的一些特性包括:查询语言易于阅读。一致性强。由于其模式自由,MongoDB允许在不首先创建文档结构的情况下创建文档。MongoDB与RelationalDatabaseManagementSystem(RDBMS)的主要比较包括:Table|Column|Value|Record与MongoDB相比,包括:Collection|Key|Value|Document这种方式意味着MongoDB的集合和RDBMS的表是相似的。此外,文档类似于记录。HadoopHadoop不限制数据结构。本质上,它只接受系统上使用的数据类型。Hadoop采用读取时模式,这增加了它对所有数据集的通用性。Hadoop中的所有数据都以文件系统的形式存储,在Hadoop文件系统上构建的Hive、Immpala等数据仓库架构使用户能够以表的形式查看底层数据。如果用户想通过Hadoop原始软件来管理Hadoop,将会变得非常复杂。由于用户选择和编码的文件类型在从速度到空间的各个方面都起着巨大的作用,因此撤消操作也变得非常困难。用户DynamoDB的商业权利DynamoDB仍然是游戏和物联网(IoT)领域的热门选择。如果您使用AWS堆栈并且需要NoSQL数据库,那么使用DynamoDB是一个不错的选择。注意:一旦使用DynamoDB,用户可能无法像在MongoDB上那样访问嵌入式数据结构。HadoopHadoop是大型企业的热门选择,因为大型企业需要服务器集群,而专门的数据管理、编程技能和高实施成本对于这些服务器集群来说不是问题。Hadoop还可以在构建未来的企业数据中心方面发挥积极作用。它可能难以管理(取决于用户决定如何管理它,有或没有第三方),但它具有很多优势。就缓存和可扩展性(scalability)特性而言,MongoDB是一个极好的选择。MongoDB还在Web开发中扮演着重要的角色,它可以轻松地将文档样式数据从后端传递到前端。对于创建内容管理系统的公司来说,选择MongoDB可以简化数据管理。性能问题DynamoDBDynamoDB在性能方面存在以下突出问题:DynamoDB的定价模型非常昂贵(译注:高吞吐量,导致存储成本高)。低延迟读取还不够低。跨区域并行写入会导致数据丢失,跨区域读取不能高度一致。难以设置持续集成/持续交付(CI/CD)管道。难以排除故障(对于像识别导致分区升温的确切密钥这样简单的事情来说很复杂)。持久化和一致性的应用场景还不广泛。与ACID事务和一致的二级索引不兼容。HadoopHadoop在性能方面有以下突出问题:DataNode和NameNode(HDFS中有两种节点,分别是NameNode和DataNode)速度慢。MapReduce数据本地化。TaskTracker的性能及其对时间间隔的影响。MongoDBMongoDB在性能方面存在以下突出问题:结合访问模式和模式设计索引非常重要。处理对象和大型数组异常的大问题。安全性和持久性设置仍然令人担忧。没有优化查询模块(Queryoptimizer,专门负责优化SELECT语句的优化器模块)。除了这些差异之外,用户总能看到系统漂浮着配套工具,进一步支持数据系统管理。让我们看看一些工具:RocksetRockset是一种可扩展且可靠的云搜索和分析服务。仅使用SQL查询语言,您就可以在数TB的数据上构建快速运行的应用程序。这是Rockset最大的好处。使用Rockset工具,用户的团队不需要熟悉另一种查询语言。NoSQLBoosterNoSQLBooster是用于连接管理MongoDB的图形用户界面(GUI)。此外,它还允许用户使用SQL语法和MongoDB语法进行查询。因此,它不仅可以更轻松地管理数据库(考虑使用SQLServerManagementStudio),还可以让分析师更轻松地运行查询来回答业务问题。SqoopApacheSqoop(TM)是一种用于在Hadoop和结构化数据存储(例如关系数据库)之间高效传输大量数据的工具。这些工具有助于简化与Hadoop的交互,可以称为ETL工具。结论DynamoDB、Hadoop和MongoDB是三种截然不同的数据库系统,以前并不总是可以互换使用。每个数据库都有其优点和缺点以及用例。以上重点介绍的内容旨在帮助用户更好地选择适合自己的数据库系统。根据组织的规模,采用任何这些数据库系统的用户都可以处理不同的数据类型、获得有效的应用程序管理服务等。