疑问~nosql数据库如何使用

最近的项目中用量berkeley db,所以也看了一些nosql的技术,但是越是了解我越是迷惑,不知道这些db到底该如何去使用,key-value存储,只能根据key搜索,这个是不是也有点太简单了?还是我了解的不够?举个例子,现在有个日志,有类型,时间,来自哪个服务器,我现在有个需求是根据类型和来自哪个服务器查询(and关系),我该怎么去做?

现在整个软件发展背景到了计算和存储分开时代,根据key获得存储数据,然后再使用hadoop之类进行计算,包括搜索,传统组合查询分解为获得所有数据,再筛选排序两个部分。

谢谢banq老师,我知道怎么做了。

"现在整个软件发展背景到了计算和存储分开时代"
请教老师,为什么说现在才是计算和存储分开的时代呢?那sql不算吗?

挺好的问题,sql本可只做存储方面事,但很多人看中其强健的select 功能,复杂的select 不只是从存储读取,还有筛选 搜索 排序等等,这些功能对巨大数据量就力不从心了,hadoop t级数据排序创有史最快,这些我们都要好好利用。

从一个角度看,sql是一个打包通用版,不一定适合所有情况。

谈得更深入些,如果按照OO设计,领域驱动设计,将业务计算都由领域模型驱动,过去,是由用户界面直接驱动SQL进行查询 筛选计算,现在中间增加一个第三者中间者领域模型,用户界面发出事件给领域模型,领域模型根据策略,决定使用hadoop进行计算,还是利用SQL筛选,还是使用全文检索luncen,等等,这样,你的一个系统通过领域模型来协调存储和计算,就比存储和计算单纯分离更上一个层次。

当然,这个概念要普及,也是很难,不管如果,很多人喜欢快,SQL打包在一起很快,那么NoSQL也迎合这样一个特点,比如HBase或Hive等将Haoop计算和存储打包在一起,你就可以象写SQL语句一样写一起交由Hive,Hive再进行分离。

这些区别都可以看成软件文化吧。

[该贴被banq于2010-05-07 10:21修改过]

关键要看你的业务需要什么样的数据模型..

对于大规模的网站, 都通过业务的设计, 将结果的查询简单化成了普通的Key/Value查询, 排序/合并等操作都交由应用程序本身去处理, 这样就可以实现更大规模的扩展.

如果业务规模较小, 而又对关系模型有一定的依赖, 短期来看可能并不适合使用NoSQL.