24小时咨询电话:0571-8802321710年专业网络服务供应商

资讯中心

- 直击网站建设第一现场,掌握全球化的消息 -

当前位置 : 首页 > 新闻中心 > 建站知识 > 【杭州网站设计】SQL or NoSQL——云计算环境中该选择谁?

【杭州网站设计】SQL or NoSQL——云计算环境中该选择谁?

分享 2011.07.19 浏览次数:6369次

NoSQL和SQL之间真正的差异是什么?实质上,是因为不同的访问模式导致了NoSQL和SQL可扩展性和性能上的不同。

NoSQL只允许数据在受限的预定义模式访问。例如DHT (Distributed Hash Table)通过hashtable API访问。其他NoSQL数据服务访问模式同样受限。因此可扩展性和性能结构是可预测和可靠的。

而在SQL中,访问模式预先是不知道的,SQL是一种通用语言,允许数据以各种方式访问,程序员也对SQL语句的执行能力控制有限。

换句话说,在SQL中,数据模型不执行特定的工作方式与数据。强调建立数据完整性、简洁性、标准化和抽象化。这对于所有大型复杂的应用极为重要。

为什么是NoSQL

NoSQL提供的方法对于SQL数据库来说有巨大的优势。因为它允许应用程序扩展的新的水平。新的数据服务基于真正可扩展的结构和体系构建云、构建分布式。这对于应用开发来说是非常有吸引力的。无需DBA,无需复杂的SQL查询。

这是不小的问题,一个好程序员自由选择一个数据模型,使用熟悉的工具写应用程序,减少对他人的依赖于,并测试和优化的代码,而不做猜测或一个黑盒(DB)的计数。

这些都是NoSQL运动的所有主要优势,但NoSQL也非万能,具体而言,数据模型的选择、接口规范以及当前面临的新业务比如移动业务数据的处理问题,都是NoSQL无法回避的。

NoSQL绝非万能

数据模型

如果没有一个统一的、定义良好的数据模型,无论采用何种技术都有缺陷。

SQL的数据模型定义了高度结构化的数据结构,以及对这些结构之间关系的严格定义。在这样的数据模型上执行的查询操作会比较局限,而且可能会导致复杂的数据遍历操作。但是数据结构的复杂性及查询的复杂性,会导致系统产生如下的一些限制:比如当数据量增长到一台机器已经不能容纳,我们需要将不同的数据表分布到不同的机器;如果你的结构化数据并没有那么强,或者对每一行数据的要求比较灵活,那可能关系型的数据模型就太过严格了;再有,使用简单的查询语言可能会导致应用层的逻辑更复杂,但是这样可以将存储系统的工作简单化,让它只需要响应一些简单的请求。

此外,NoSQL数据库并非是唯一适合存储大量数据或大型数据,显然,通过良好的分区设计,SQL数据库也可以获得极好的扩展性。

接口和互操作问题

不可否认,NoSQL的数据服务接口还有待规范。比如DHT,这是一个简单的接口,但仍旧没有标准的语义。每个DHT服务都使用其自己的一套接口。另一个大问题是不同的数据结构,如 DHT和binary tree,只是作为一个例子,共享数据对象。所有这些服务中,指针没有内在的语义。事实上,这些服务中,处理互操作性是开发者的职责,这一点很很重要,尤其是当需要数据被多个服务访问时。一个简单的例子:后台工作由Java实现,Web服务类工作由PHP实现,数据可以被轻易地从两个域访问数据吗?显然,人们可以使用Web服务作为前端数据访问层,但是,NoSQL有可能让事情变得更复杂,并降低了业务敏捷性,灵活性和性能,同时增加了开发工作量。

移动业务

在移动业务领域,需要一套工具,这套工具不仅要有可扩展性,而且还易于管理并且稳定,并在云上有一个固定的设置服务器。当系统出现问题的时候,可以不需要通过判断整个系统或开发平台来诊断问题,而是通过远程访问——这正是运维经理们所要面对的问题,但是在目前NoSQL所能提供的服务功能来看,很难实现,即便是Amazon的托管环境。

SQL和NoSQL如何结合?

总而言之,在NoSQL和SQL的选择上,需要了解到以下内容:

数据模型及操作模型:你的应用层数据模型是行、对象还是文档型的呢?这个系统是否能支持你进行一些统计工作呢?

可靠性:当你更新数据时,新的数据是否立刻写到持久化存储中去了?新的数据是否同步到多台机器上了?

扩展性:你的数据量有多大,单机是否能容下?你的读写量求单机是否能支持?

分区策略:考虑到你对扩展性,可用性或者持久性的要求,你是否需要一份数据被存在多台机器上?你是否需要知道数据在哪台机器上,以及你能否知道。

一致性:你的数据是否被复制到了多台机器上,这些分布在不同点的数据如何保证一致性?

事务机制:你的业务是否需要ACID的事务机制?

单机性能:如果你打算持久化的将数据存在磁盘上,哪种数据结构能满足你的需求(你的需求是读多还是写多)?写操作是否会成为磁盘瓶颈?

负载可评估:对于一个读多写少的应用,诸如响应用户请求的web应用,我们总会花很多精力来关注负载情况。你可能需要进行数据规模的监控,对多个用户的数据进行汇总统计。你的应用场景是否需要这样的功能呢?

使用NoSQL架构实现SQL数据库?

使用NoSQL的基础架构实现SQL数据库是一个很好的解决方案。一个SQL数据库是可扩展、易管理,云就绪、高度可用的,完全建立在NoSQL的基础结构(分布式)上,但仍然提供SQL数据库的所有优势,如互操作性,定义良好的语义以及更多。

这种混合结构也许不如纯粹的NoSQL的服务,但足以满足需要更稳定系统、可扩展性和云服务的80%的市场需求。

这种解决办法还允许很容易地迁移现有的应用到云环境,从而保护相关组织在这些应用上所付出的巨大的投资。

在我看来,构建于NoSQL基础之上的SQL数据库,可以为那些在其成长期间期望灵活、高效的客户提供最高的价值。

原文链接:http://cloud.dzone.com/news/sql-vs-nosql-cloud-which

  • 标签:

    杭州网站设计公司 杭州网站建设公司 杭州网站制作公司  杭州网站设计 杭州网站建设 杭州网站制作  杭州精品网站制作 杭州精典网站制作 杭州精品网站设计

最新网站案例

洞悉市场趋势演变让传播回归社会

    免费获取网站建设与网络推广方案报价

    • 关于我们

      杭州帷拓科技有限公司,是一家新型的全案网络开发公司,作为以互联网高端网站建设、APP开发、小程序开发为核心的专业网络技术服务供应商,帷拓科技致力于全面分析市场环境、衡量与预测市场需求、整合区别于行业竞争对手的绝对优势,结合品牌理念深度挖掘项目优势和产品价值,提升客户品牌认知、认可度。

    • 我们的客户

      帷拓科技历经十年沉淀,与国内外上千家客户达成合作关系,其中稳定合作的公司有:浙江华为、浙江移动、浙江5G产业联盟、浙江省社科院、绿城足球俱乐部、娃哈哈双语学校、健康中国杭州峰会、科雷机电等,帷拓科技始终坚持“帷有专业,才能拓展无限”的服务理念,坚持“认真坚持细节”的优质服务理念,不断完善自身,成就企业,最终实现共赢。

    • 我们的业务

      帷拓科技主营业务范围包含互联网高端网站建设、APP开发、小程序开发、商城网站建设、公众号运营以及数字营销等,涵盖了服务、房产、数码、服装、物流贸易等行业,根据品牌现状,为每个客户量身定制项目整体服务方案,以敏锐的市场洞察力、创新的市场策划能力,全面把握市场变化,为客户实现从企业到消费者的价值转换。

    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur