针对PHP开辟人员的CouchDB底子知识[网络技术]
本文“针对PHP开辟人员的CouchDB底子知识[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假如您是位典型的 PHP 开辟人员,就不难通过以往的项目得到这样一个结论:在大都(假如不是全部)情形下,为了举行动态数据处理,您城市让 PHP 与数据库后端举行对话;而在这些实例中,99% 的情形下利用的都是 MySQL.
目前,利用关系型数据库无可厚非.假如所处理的数据构造复杂,并具有多种关系,那么这么做是很公道的.您可以顺利地(或是不太顺利地,取决于您对 SQL 的熟习程度)举行对情势、数据关系、表等等的处理.
不过,您所从事的项目有时也会让您不经意间心生疑问:“为什么我要做全部这些工作?” 您所从事的这个项目包含了一些简单的或难以猜测的数据 — 在差别的日子得到的数据字段大概差别乃至事件之间的数据字段都不尽相同.若是成立一个情势来猜测将会呈现什么数据字段,后果极大概会得到内含大量空字段的表或大量的映射表.
关于这些项目,您需求采取一种差别的方法 — 不触及关系型数据库.在这些情形下,您需求的是一个基于文档的、没有情势的、具有扁平地址空间的分外数据库.简言之,您需求 Apache CouchDB.
什么是 CouchDB?
CouchDB 是(按照 Apache CouchDB 网站):
一个文档数据库服务器,可通过 RESTful JSON API 拜候.
为特别目的而计划,无情势,具有扁平地址空间.
分布式的、特点丰富、具有双向冲突检测及管理的增量复制.
可查询、可索引、具有一个面向表的报表引擎,利用 JavaScript 作为引擎的查询语言.
这意味着,您可以成立一个可以承受 JSON 文档的 CouchDB 数据库.每个文档均有一个惟一的订正 ID 和自身构造,并且全部文档均存储于同一个扁平的调集内.比方,假定您设置了一个简历集.第一个简历具有的字段包含:名、姓、电话号码、电子邮件地址、Twitter 帐户、特长以及具体的工作阅历.而第二个简历则只闻名、姓、电子邮件地址以及一个简短的工作阅历.这种差别足以使关系型数据库变得非常不合适,但关于 CouchDB,这点差别稀松普通.
简言之,一个 CouchDB 文档就是一个由多个命名字段构成的对象.这些字段的值可以是字符串、布尔值、数字、日期、次序列表或关联映射.清单 1 展示了一个示例简历文档.
清单 1. 一个简单的 CouchDB 文档
- {
- "Firstname": "Tom"
- "Lastname": "Myer"
- "Twitter": "@myerman"
- "Email": "tom@example.com"
- "Skills": ["php","couchdb","xml","json"]
- "Work History": ....
- }
到目前为止,假如您习惯了利用 JSON,那么不会认为有太大出入.即便您不习惯,您仍旧可以将此文档对应成您所熟习的东西,比方一个 PHP 数组.实际上,您可以将这些内置的 JSON encode/decode 函数用于 CouchDB,大概您也可以挑选一种更为面向对象的方法.
为了从一个调集查询信息,您可以通过 RESTful JSON API 利用各种便利的查询办法.利用 JSON 简化了很多问题.还有一点,作为一个熟习 JavaScript、Ajax 和 JSON 的 Web 开辟人员,您无需掌握 SQL 也能完成任务.
在持续之前,最好暂停一下,先来侧重夸大几点.CouchDB 不是一个关系型数据库.这一点我大概早就说过了,但是它需求反复夸大.不要试图以关系型数据库的方法利用 CouchDB,比方插入 ID 字段来帮忙理清文档间的关系.与成立关系差别,您需求将想要的内容塞入到文档,然后持续.
此外,CouchDB 亦不是一个面向对象的数据库.它不是什么本地对象、长期数据层供您用作面向对象构造的底子.千万不要这么认为.
以上是“针对PHP开辟人员的CouchDB底子知识[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |