如何权衡Amazon DynamoDB和SimpleDB

如何权衡Amazon DynamoDB和SimpleDB,第1张

NoSQL数据库促进了可扩展性,且能够帮助Web应用减少开发时间。不像关系型数据拥有固定的模式,很多NoSQL数据库无模式,但也为开发者提供了更多的灵活性。两个比较流行的NoSQL数据库是亚马逊Web服务的SimpleDB和DynamoDB。

亚马逊DynamoDB和SimpleDB充分管理了非关系型数据库,并且提供了简单的应用程序接口(API)进行存储、查询和管理数据。这两个数据库都是适用于寻求灵活数据库设计的应用,但是也有数个不同点和应用。

用SimpleDB管理更小的数据库

SimpleDB最适合每一个域不超过10GB的小型数据库,这种数据库需要基本的存储和查询 *** 作。如果你期望的表的增长速度比这个更大,而且计划使用SimpleDB的话,将需要自己将数据分成两个或者更多的域来管理。同时它也能够跨域手动分割数据,附加的管理费用破坏了SimpleDB的优势。

这项服务旨在服务于小型数据库应用,这些应用这种灵活性、可用性以及耐久性是关键考量,同时可扩展性需求较少。能够在运行中改变表的属性,且无须修改模式、重新索引数据或者离线 *** 纵表结构都是其灵活性很好地体现。SimpleDB分布在一个区域中的多个数据中心提供了可用性和耐久性。

SimpleDB数据库围绕域组织管理,类似于关系表。域包含多个元素,或者键值对集。根据关系表中的行考虑元素,同时键和值分别是属性和属性组件。数据被添加到域中,要求使用基础API或者控制台。

SimpleDB支持简单的选择声明,即任何SQL程序员都能理解。然而也有明显的区别。SimpleDB不支持跨域联合。如果你需要结合多个域的数据,必须查询和结合每一个所使用的定制程序。对于简单的联合并不困难,但是如果你的应用需要支持多个复杂的联合,就要使用MySQL或者PostgreSQL这样的关系型数据库了。二者都可以通过亚马逊的关系型数据库服务获得。

SimpleDB的一个优势就是在一个表中索引所有的元素,这对于允许用户查询任何元素的应用很有用。由于所有的元素都在索引中,通过姓氏、城市、国籍或者邮政编码查询客户表可以很快实现。

用DynamoDB管理大型数据库

亚马逊DynamoDB旨在为要求更高的应用设计,这些应用要求可扩展的数据存储以及更高级的数据管理功能。代替使用硬盘,DynamoDB使用固态硬盘,实现恒定、低延迟的读写时间。旨在扩展大容量同时维持一致的性能,虽然这种性能伴随着更为严格的查询模型。

由于DynamoDB同更大的企业数据库协作,他们可能要求额外的数据管理服务。AWS同d性MapReduce(EMR_AWS Hadoop服务)和Redshift(其数据仓库服务)集成DynamoDB。使用亚马逊Redshift或者EMR进行大规模特殊查询或者分析,使用DynamoDB基于散列和散列分区值进行更有针对性的查询。你可以使用DynamoDB来避免管理分割域产生的额外费用。DynamoDB没有规模限制,而且可以按需管理数据域。

DynamoDB在主键值上索引,允许二级索引。主索引和二级索引都基于散列或者散列分区键值。取代单一的选择声明,这项服务使用查询和扫描声明。查询声明同主或者二级散列或者刷哪里额分区键值使用。在表中扫描读取每一个元素,提供了更多的灵活性,但是这种 *** 作比查询更慢,尤其是在大型的表中更是如此。你的应用的响应性也部分由此决定。

开发者可以使用DynamoDB Local来构建和测试本地数据库代码,而不是通过实际生产的数据库。DynamoDB和DynamoDB Local API互相兼容,因此代码可以在两种环境中运行。

Redshift即是AWS提供的一款:云上数据仓库服务

Redshift同我们前面使用的RDS一样,是一个全托管的服务(非完全的server less,可以选择集群数量和性能,但是无需管理)

Redshift同RDS一样,只需要鼠标点击几下,即可得到一款可用的高性能、高可靠的数据仓库服务。

但是与RDS不同的是,Redshift可以选择集群模式,也就是可以选择Redshift底层,基于多少台硬件服务器提供算力和存储。

同时,从概念上也不同,我们列个表格来看一下Redshift和RDS的区别

那么来看看Redshift有什么特点。

Amazon Redshift 使用了多种创新技术,对于大小在 100GB 到 1PB 或更高的数据集,可以实现很高的查询性能,并使用了列式存储。Amazon Redshift 采用了大规模并行处理 (MPP) 数据仓库架构,可以对 SQL *** 作进行并行分布处理,以便利用所有可用资源。底层硬件支持高性能数据处理,使用本地连接的存储以便尽可能增大 CPU 与驱动器之间的吞吐量,同时使用 10GigE 网状网络以便尽可能增大节点之间的吞吐量。

仅需在 AWS 管理控制台中单击几下或通过一次简单的 API 调用,您就能在性能或容量需求发生变化时,轻松更改云数据仓库中的节点数量或类型。

利用 Amazon Redshift,您只要用单个 160GB DC2.Large 节点就可开始,并能一路扩展到使用 16TB DS2.8XLarge 节点的 1PB 或者更多压缩用户数据。 调整大小时,Amazon Redshift 可将您现有的集群置于只读模式,并预置一个您选定大小的新集群,然后将数据从您的旧集群并行复制到您的新集群。在预置新集群的同时,您可继续对您的旧集群进行查询。一旦您的数据被复制到新集群,Amazon Redshift 会自动将查询重新定向至新集群,并移除旧集群。

Amazon Redshift 处理数据仓库的管理、监控及扩展所需的所有工作,从监控集群运行状况、备份到进行修补和升级。

在性能和容量需求发生变化时,您可以轻松调整集群大小。通过处理所有这些耗时耗力的任务,Amazon Redshift 使您得到了解脱并专注于您的数据和业务。

Amazon Redshift 的自动快照功能连续地将集群上的数据备份至 Amazon S3。备份是连续、递增而自动的。

Amazon Redshift 按用户定义的期间存储您的快照,此期间可以是 1 到 35 天。您可在任何时候拍摄您自己的快照,这些快照利用所有现有的系统快照,并可保留到您明确地删除它们时为止。

Redshift 还能将您的快照异步复制到另一个区域的 S3 中进行灾难恢复。一旦您删除了某个集群,您的系统快照也将被移除,但您的用户快照在您明确地删除它们之前仍可使用。

您可通过 AWS 管理控制台或 Amazon Redshift API 使用任何系统快照或用户快照来恢复您的集群。

系统元数据恢复后,您的集群就可供使用,并且您可在用户数据在后台输出时开始运行查询。

Amazon Redshift 拥有多种能够提高数据仓库集群可靠性的功能。

所有写入集群内节点的数据均会自动复制到集群内的其他节点,且所有数据会被连续备份至 Amazon S3。Amazon Redshift 会持续监控集群的运行状况并会自动从出现故障的驱动器重新复制数据,并在必要时替换节点。

并且这一切完全无需用户管理,AWS为您管理一切,用户只需要关心业务开发即可。

借助 Amazon Redshift,您可以配置防火墙规则,以控制对数据仓库集群的网络访问。您可以在 Amazon Virtual Private Cloud (Amazon VPC) 中运行 Amazon Redshift,将您的数据仓库集群隔离在您自己的虚拟网络中。

Amazon Redshift 与 AWS CloudTrail 相集成,使您能够对所有的 Redshift API 调用进行审计。Amazon Redshift 还会记录所有的 SQL *** 作,包括连接尝试、查询和数据库变动。您可以使用 SQL 查询在系统表格中访问这些记录,或选择将其下载到 Amazon S3 上的某个位置。

Amazon Redshift 是一种 SQL 数据仓库解决方案,使用了行业标准的 ODBC 和 JDBC 连接。可以从控制台的连接客户端选项卡中下载我们的定制 JDBC 和 ODBC 驱动程序。

Amazon Redshift 与其他 AWS 服务相集成,并内置了命令将数据从 Amazon S3、Amazon DynamoDB 或 Amazon EC2 实例以及使用 SSH 的本地服务器中并行加载到每个节点。Amazon Kinesis 还集成了 Amazon Redshift 作为数据目标。

在亚马逊从事开发手机程序不难。

只要找到开发软件的相应人才,开发手机软件应该不会太难。首先是需求整理,这个阶段是对项目进行初步整理,要实现哪些功能,先大致的整理出来,然后在根据需求进行详细需求的分析,把一些重要的需求先确定下来,这样就可以对项目有一个全面的了解,如果是找外包公司的话,开发需求文档就会由开发公司提供,客户只需要确定需求就可以。

当客户确定需求签订合同后就可以正式开启项目了,先要做的工作就是UI设计,ui分为App的ui和后台的ui。Ui设计师会根据页面进行相关的配色设计,功能具象化处理、交互设计以及各种机型、系统的适配。Ui设计师要和项目经理沟通确定后,最后才是出app的高保真图片。

而对于后台ui中,绝大部分app项目都会有相对应的管理后台,虽然后台是用户接触不到,但是好的ui设计可以帮助工作人员快速上手使用。

在app开发阶段,一般项目都包括了这几个模块,比如服务器端、app端、web管理端,在服务器端接口协议文档,服务器环境搭建,一般国内用的服务器多为云服务ecs,国外用得多是亚马逊,设计数据库和编写api接口。

App端,根据ui设计图进行界面开发,ui开发完成则进入和服务端接口对接,通过服务端的接口获取数据,编写功能上的逻辑代码。

在web管理端,根据前端的逻辑,后台就要开发相对应的功能进行匹配,同样需要编写功能上的代码。

在app开发好之后,是不能直接上线的,而要先做测试,测试app每个功能是否可以使用,是否存在bug,一般app要上线,至少要做2轮的内部测试和小范围的公测,确保app没有任何问题再进行上线,如果没有进行专业的测试,那么可能存在项目成品和客户预想的产品存在一定的落差,所以测试就是开发阶段收尾的问题,也是非常重要的工作,做好测试后app产品就可以进行在应用商店的上线。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11318358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存