当前位置:  开发笔记 > 数据库 > 正文

关于非关系型数据库(NoSQL)的问题

如何解决《关于非关系型数据库(NoSQL)的问题》经验,为你挑选了0个好方法。

虽然我还没有使用任何新的NoSQL数据库,但我试图通过阅读维基百科的文章,博客和窥视一些NoSQL DBs文档来了解自己.

我刚刚(重新)阅读了2009年8月版的php | architect,特别是关于非关系数据库的文章和我头脑中出现的一些问题,我理解这篇文章对这个主题非常清楚,但它是足以让我困惑......

CouchDB的

关于CouchDB的主要问题是为什么这么多炒作?.从我了解的CouchDB提供了一个Web服务,可以让你创建数据库和文件数据库中,这些文件可以有多个JSON编码的属性,也有一个特殊的_id_rev属性的文件的跟踪修订.

我真的没有对此有所了解,几年前我为一个宠物项目编写了一个类似的(?)系统来存储文件,结构是这样的:

documents/
  document-name/
    (revision) timestamp/
      (contents) md5-hash.txt
        PHP Serialized Data

我确信我缺少一些非常基础的东西,否则(从PHP开发人员的角度来看)这将与CouchDB具有相同的优势并且更快 - 不需要编码和解码JSON.


Amazon SimpleDB

现在这个真的让我头晕目眩......作者(Russell Smith)给出了以下例子:

$sdb->putAttributes('phparch', 'may', array('title' => array('value' => 'May 2009'), 'have' => array('value' => false)));
$sdb->putAttributes('phparch', 'june', array('title' => array('value' => 'June 2009'), 'have' => array('value' => true)));
$sdb->putAttributes('phparch', 'july', array('title' => array('value' => 'July 2009'), 'have' => array('value' => true)));

然后他说Amazon现在支持类似SQL的接口,然后执行以下查询:

$sdb->select('phparch', 'SELECT * FROM phparch WHERE have = "1"');

他没有给出如何在CouchDB中进行该查询的任何类似示例(但是他在Views和Map/Reduce上留下了一些提示),但我想这也是可能的,所以我的问题是:Amazon(和CouchDB)如何做它?

我的第一个猜测是他们打开所有文档(可能在分布式环境中),然后应用reduce操作来过滤属性与搜索条件匹配的文档,但这不会过于昂贵(CPU和磁盘) I/O)即使在并行计算中?


我知道我忽略了一些重要的东西,如分布,一致性等等,但我只是想要掌握NoSQL存储的基本内部工作原理.

PS:另外,任何人都可以解释为什么CouchDB和Amazon SimpleDB都是用Erlang构建的吗?

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有