Jun'uary
Jan'uary » 日志 » RDDB: Ruby Document-Oriented DataBase
RDDB: Ruby Document-Oriented DataBase
Jan 发表于 2007-11-08 15:56:00
Document-Oriented Database,直译为面向文档的数据库,RDDB是它的一个Ruby实现。
什么是文档?大概可以理解为一个存储了hash table(Java里的Map)的文件,比如
这就是一个文档了,其中有很多hash entry, 比如Name => Jan. 来看一下RDDB的例子:
以上创建了一个新的数据库,插入了两条新的记录,很清晰不是吗。然后怎么读数据呢?需要用到一个叫做View的东西:
RDDB不是SQL,因为它不关注数据与数据之间的关系;也不是OODB,你用不着创建一个对象然后将之持久化;在RDDB中你看不到Schema, 你不需要创建Schema,你需要定义的是View。看起来RDDB是一个Domain Specific的数据库,如它的名字所说,Document Oriented. 它的长处在于处理文档信息,因为它的唯一的Schema就是按照文档的方式设计的。我相信RDDB用在创建如CRM, WIKI, Forum之类的应用的时候应该会很方便。
Ruby本身是一个非常适合做DSL的语言,RDDB的美妙之处在于,它利用了Ruby的这个优点,把block引进数据库中,相当于用大家熟悉的Ruby语法替换掉了SQL里面猥琐的聚合函数之类的东东,看下面的例子:
简直太爽了。。
什么是文档?大概可以理解为一个存储了hash table(Java里的Map)的文件,比如
Doc No.20071108
Name: Jan
Sex: Male
Career: President
这就是一个文档了,其中有很多hash entry, 比如Name => Jan. 来看一下RDDB的例子:
# First create an database object
database = Rddb::Database.new
# Put some documents into it
database << {:name => 'John', :income => 35000}
database << {:name => 'Bob', :income => 40000}
以上创建了一个新的数据库,插入了两条新的记录,很清晰不是吗。然后怎么读数据呢?需要用到一个叫做View的东西:
# Create a view that will return the names
database.create_view('names') do |document, args|
document.name
end
# The result of querying will return an array of names
assert_equal ['John','Bob','Jim'], database.query('names')
RDDB不是SQL,因为它不关注数据与数据之间的关系;也不是OODB,你用不着创建一个对象然后将之持久化;在RDDB中你看不到Schema, 你不需要创建Schema,你需要定义的是View。看起来RDDB是一个Domain Specific的数据库,如它的名字所说,Document Oriented. 它的长处在于处理文档信息,因为它的唯一的Schema就是按照文档的方式设计的。我相信RDDB用在创建如CRM, WIKI, Forum之类的应用的时候应该会很方便。
Ruby本身是一个非常适合做DSL的语言,RDDB的美妙之处在于,它利用了Ruby的这个优点,把block引进数据库中,相当于用大家熟悉的Ruby语法替换掉了SQL里面猥琐的聚合函数之类的东东,看下面的例子:
database.create_view('average income') do |document, args|
document.income
end.reduce_with do |results|
results.inject { |memo,value| memo + value } / results.length
end
assert_equal 37333, database.query('average income')
简直太爽了。。
曾经的这一天...
- » 2006年: Raven 1.1: Build Java with Ruby
- » 2006年: 2006年11月7日
- » 2005年: 花样轮滑A1级测试内容
- » 2005年: 跳跃常识
- » 2005年: 花样轮滑-步伐篇运用从弧线的滑行开始
- » 2005年: 花样轮滑-图形篇
- » 2005年: 花样轮滑的竞赛项目和特点
- » 2005年: 花样滑冰跳跃动作的摆臂技术分析
- » 2005年: 贴几双漂亮的花样鞋
- » 2005年: 单排花样轮滑
- » 2005年: 花样轮滑中跳跃级别的分类
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
