WEB开发网
开发学院软件开发Java Java 开发 2.0: NoSQL 阅读

Java 开发 2.0: NoSQL

 2010-07-20 00:00:00 来源:WEB开发网   
核心提示: 为实现伸缩性而构建伴随高度可伸缩的 Web 应用程序面临的新问题而来的是一些新的解决方案,Facebook 并不依赖于一个关系数据库来解决其存储需求;相反,Java 开发 2.0: NoSQL(2),它使用一个 “键 / 值” 存储 —主要是一个高性能 Has

为实现伸缩性而构建

伴随高度可伸缩的 Web 应用程序面临的新问题而来的是一些新的解决方案。Facebook 并不依赖于一个关系数据库来解决其存储需求;相反,它使用一个 “键 / 值” 存储 —主要是一个高性能 HashMap。称为 Cassandra 的内部解决方案也被 Twitter 和 Digg 使用,并在最近捐献给了 Apache Software Foundation。Google 是另一个 Web 实体,它的爆炸式增长要求它寻求一个非关系数据存储 —Bigtable 就是寻求的结果。

非关系数据存储没有联接表或主键,甚至没有外键这个概念(尽管这两种类型的键以一种更松散的形式出现)。因此,如果您尝试将关系建模作为一个 NoSQL 数据库中的数据建模的基础,那么您可能最后以失败告终。从域模型开始将使事情变得简单;实际上,我已经发现,域模型下的无模式结构的灵活性正在重新焕发生机。

从关系数据模型迁移到无模式数据模型的相对复杂程度取决于您的方法:即您从基于关系的设计开始还是从基于域的设计开始。当您迁移到 CouchDB 或 Bigtable 这样的数据库时,您 的确会丧失 Hibernate(至少现在)这样的成熟的持久存储平台的顺畅感觉。另一方面,您却拥有能够亲自构建它的 “绿地效果”。在此过程中,您将深入了解无模式数据存储。

实体和关系

无模式数据存储赋予您首先使用对象来设计域模型的灵活性(Grails 这样的较新的框架自动支持这种灵活性)。您的下一步工作是将您的域映射到底层数据存储,这在使用 Google App Engine 时再简单不过了。

在文章 “Java 开发 2.0:针对 Google App Engine 的 Gaelyk” 中,我介绍了 Gaelyk —— 一个基于 Groovy 的框架,该框架有利于使用 Google 的底层数据存储。那篇文章的主要部分关注如何利用 Google 的 Entity对象。下面的示例(来自那篇文章)将展示对象实体如何在 Gaelyk 中工作。

上一页  1 2 3 4 5 6 7  下一页

Tags:Java 开发 NoSQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接