IBM NoSQL数据建模

IBM NoSQL数据建模

ID:22228541

大小:153.00 KB

页数:13页

时间:2018-10-27

IBM NoSQL数据建模_第1页
IBM NoSQL数据建模_第2页
IBM NoSQL数据建模_第3页
IBM NoSQL数据建模_第4页
IBM NoSQL数据建模_第5页
资源描述:

《IBM NoSQL数据建模》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方关系数据库已经统治数据存储30多年了,但是无模式(或NoSQL)数据库的逐渐流行表明变化正在发生。尽管RDBMS为在传统的客户端服务器架构中存储数据提供了一个坚实的基础,但它不能轻松地(或便宜地)扩展到多个节点。在高度可伸缩的Web应用程序(比如Facebook和Twitter)的时代,这是一个非常不幸的弱点。尽管关系数据库的早期替代方案(还记得面向对象的数据库吗?)不能解决真正紧急的问题,NoSQL数据库

2、(比如Google的Bigtable和Amazon的SimpleDB)却作为对Web的高可伸缩性需求的直接响应而崛起。本质上,NoSQL可能是一个杀手问题的杀手应用程序—随着Web2.0的演变,Web应用程序开发人员可能会遇到更多,而不是更少这样的应用程序。在这期Java开发2.0中,我将向您介绍无模式数据建模,这是经过关系思维模式训练的许多开发人员使用NoSQL的主要障碍。您将了解到,从一个域模型(而不是关系模型)入手是简化您的改变的关键。如果您使用Bigtable(如我的示例所示),您可以借助Gaelyk:Go

3、ogleAppEngine的一个轻量级框架扩展。NoSQL:一种新的思维方式?当开发人员谈论非关系或NoSQL数据库时,经常提到的第一件事是他们需要改变思维方式。我认为,那实际上取决于您的初始数据建模方法。如果您习惯通过首先建模数据库结构(即首先确定表及其关联关系)来设计应用程序,那么使用一个无模式数据存储(比如Bigtable)来进行数据建模则需要您重新思考您的做事方式。但是,如果您从域模型开始设计您的应用程序,那么Bigtable的无模式结构将看起来更自然。非关系数据存储没有联接表或主键,甚至没有外键这个概念(

4、尽管这两种类型的键以一种更松散的形式出现)。因此,如果您尝试将关系建模作为一个NoSQL数据库中的数据建模的基础,那么您可能最后以失败告终。从域模型开始将使事情变得简单;实际上,我已经发现,域模型下的无模式结构的灵活性正在重新焕发生机。从关系数据模型迁移到无模式数据模型的相对复杂程度取决于您的方法:即您从基于关系的设计开始还是从基于域的设计开始。当您迁移到CouchDB或Bigtable这样的数据库时,您的确会丧失Hibernate(至少现在)这样的成熟的持久存储平台的顺畅感觉。另一方面,您却拥有能够亲自构建它的“

5、绿地效果”。在此过程中,您将深入了解无模式数据存储。实体和关系无模式数据存储赋予您首先使用对象来设计域模型的灵活性(Grails这样的较新的框架自动支持这种灵活性)。您的下一步工作是将您的域映射到底层数据存储,这在使用GoogleAppEngine时再简单不过了。----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方在文章“Java开发2.0:针对Go

6、ogleAppEngine的Gaelyk”中,我介绍了Gaelyk——一个基于Groovy的框架,该框架有利于使用Google的底层数据存储。那篇文章的主要部分关注如何利用Google的Entity对象。下面的示例(来自那篇文章)将展示对象实体如何在Gaelyk中工作。清单1.使用Entity的对象持久存储1.defticket=newEntity("ticket")2.ticket.officer=params.officer3.ticket.license=params.plate4.ticket.issuse

7、Date=offensedate5.ticket.location=params.location6.ticket.notes=params.notes7.ticket.offense=params.offense这种对象持久存储方法很有效,但容易看出,如果您频繁使用票据实体—例如,如果您正在各种servlet中创建(或查找)它们,那么这种方法将变得令人厌烦。使用一个公共servlet(或Groovlet)来为您处理这些任务将消除其中一些负担。一种更自然的选择——我将稍后展示——将是建模一个Ticket对象。返回比

8、赛我不会重复Gaelyk简介中的那个票据示例,相反,为保持新鲜感,我将在本文中使用一个赛跑主题,并构建一个应用程序来展示即将讨论的技术。如图1中的“多对多”图表所示,一个Race拥有多个Runner,一个Runner可以属于多个Race。图1.比赛和参赛者如果我要使用一个关系表结构来设计这个关系,至少需要3个表:第3表将是链接一个“多对多”关系的联接表。所幸

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。