|
MySQL到NoSQL:数据的重思和查询方式的转换从关系型数据库转移至NoSQL数据库——比如从MySQL转移到Couchbase,你需要对你的数据进行再思考。至于为什么是Couchbase而不是MongoDB什么的,因为博文的作者MC Brown是现任Couchbase副总裁,所以你懂得;同时这篇Couchbase博文还涉及到迁移后对查询的影响。 其次:如果什么都是文档,那么你该如何查询 第一节中已经讨论过如何在MySQL上使用一条简单的SQL语句来获得一个原料中包含胡萝卜菜谱的列表。在MySQL中我们通过搜索ingredients表中与carrot匹配的recipe ID值,然后通过join从recipe表中获得recipe title。出于速度考虑,你可能会使用一个索引来提升查询的响应时间,用以保存单独的每一条记录。 在Couchbase所有数据都是文档,并且这里也没有嵌入的方法用以查询表格中的字段,这里既没有字段也没有表格。因为Couchbase中本就没有严格的数据结构模型(同样也没有方法让数据库引擎去确定自由格式文档中的字段),那么我们该如何完成在普通表格上的操作呢? Couchbase支持一个构造称为view,而这个view与MySQL中的view非常神似;除下在Couchbase中,view是唯一从数据库文档中获得列表的方法,而在MySQL中view只是丰富了一个选择。View事实上定义了3件事情: View中包含的信息结构。你可以想象成表结构的定义,就像你在MySQL中建立一张表。 用以搜索的字段或者是信息。一个view将输出两项结果,key和value。Key将被传入方法以发现你需要搜索什么,更具体的说就是你需要查询的数据库内容。 结构和key上的索引。索引同样用于提升搜索的性能。 View使用JavaScript在一个设计文档中进行定义,使用一个文档作为参数的函数。一旦view被构造,数据库中的每个文档都会提供给view,然后view查询并输出你需要的结果。不用担心JavaScript,JavaScript将只在服务器上执行(不会在客户端上执行)。 现在回到MySQL,一个没有where的查询,查询输出选择的字段,并且在输出结果中构造一个匹配行的列表。下面,详解一个SQL语句:
当在MySQL上运行一个查询,MySQL服务器从一张或者多张表中取得信息,然后构建输出结果列表:
在Couchbase中,View从单一的文档中获取记录,并且在处理过程中附带建立一个索引。结果则是view抓取的所有文档列表。
在MySQL中执行一个带where的查询,索引一般被期望帮助你查询需要的记录:
而在Couchbase中,生成的view就是你的表格,当你对view进行查询,Couchbase使用这些键的值(以及生成的相关索引)和过滤后(你指定)的返回信息,生成最终的匹配列表。
总结 上文主要针对MySQL到Couchbase的转变,通过上面的两个步骤基本上可以完成这个过渡。然而一些更高级的操作必然需要一些更多的思考,MC Brown在Couchbase博客同样发布了转换的第二部分,包括了更多高级查询的思考。 责编:孔维维 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:kaiyun体育官方人口
文章著作权分属kaiyun体育官方人口
、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 |
|