mysql
mysql innodb建立普通索引怎么写?
innodb建立普通索引怎么写?
先从数据结构的角度来答。
题主应该知道B-树和B 树最重要的一个区别就是B 树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。
这就决定了B 树更适合用来存储外部数据,也就是所谓的磁盘数据。
从Mysql(Inoodb)的角度来看,B 树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。
那么Mysql如何衡量查询效率呢?磁盘IO次数,B-树(B类树)的特定就是每层节点数目非常多,层数很少,目的就是为了就少磁盘IO次数,当查询数据的时候,最好的情况就是很快找到目标索引,然后读取数据,使用B 树就能很好的完成这个目的,但是B-树的每个节点都有data域(指针),这无疑增大了节点大小,说白了增加了磁盘IO次数(磁盘IO一次读出的数据量大小是固定的,单个数据变大,每次读出的就少,IO次数增多,一次IO多耗时啊!),而B 树除了叶子节点其它节点并不存储数据,节点小,磁盘IO次数就少。这是优点之一。
另一个优点是什么,B 树所有的Data域在叶子节点,一般来说都会进行一个优化,就是将所有的叶子节点用指针串起来。这样遍历叶子节点就能获得全部数据,这样就能进行区间访问啦。
至于MongoDB为什么使用B-树而不是B 树,可以从它的设计角度来考虑,它并不是传统的关系性数据库,而是以Json格式作为存储的nosql,目的就是高性能,高可用,易扩展。首先它摆脱了关系模型,上面所述的优点2需求就没那么强烈了,其次Mysql由于使用B 树,数据都在叶节点上,每次查询都需要访问到叶节点,而MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql(但侧面来看Mysql至少平均查询耗时差不多)。
总体来说,Mysql选用B 树和MongoDB选用B-树还是以自己的需求来选择的。
mongodb最好的教材求推荐?
NoSQL成为常态,数据库在过去几年中发生了根本性的变化。这些DB是非关系型的,这使得开发更加棘手,但也更快,更容易扩展。
MongoDB是最受欢迎的NoSQL数据库之一,旨在为WEB应用提供可扩展的高性能数据存储解决方案。如果你正在尝试自己学习Mongo,那么选择一本好书可以事半功倍。在这篇文章中,我已经搜集了最好的MongoDB书籍,你可以通过它们去学习所有MongoDB的基础知识乃至更多。
1、《MongoDB Basics》
这是一本真正的NoSQL入门书,专为那些从未使用过Mongo或NoSQL结构的人而写。你将从本书了解到MongoDB为何如此有趣以及为什么它能够在众多数据库引擎中脱颖而出。你还将学习到如何在本地安装Mongo以及如何使用MongoDB设置应用程序。
2.《MongoDB: The Definitive Guide》
作者Kristina实际上是MongoDB项目的核心贡献者,因此他对这个数据库引擎再清楚不过。在本书中,你将学习如何处理数据以及如何从零开始构建面向文档的数据库引擎。
书中介绍了面向文档的存储方式及利用MongoDB的无模式数据模型处理文档、集合多个数据库,讲述了如何执行基本的操作以及各种复杂的条件查询,如果你已经学会SQL,你可能会发现它知识确实适用,但Mongo却能带你走进一个完全不同的数据管理世界。我建议初学者用这本书,虽然有一定难度,但只要你投入,就可以快速应用到实际工作中
3.《MongoDB in Action》
第一版豆瓣评分8.2,在第2版中,本书完全使用Mongo v3.x进行了更新,它涵盖了许多新功能。这应该是任何希望通过实践学习Mongo的人的首选指南。通过本书,你将可以学到索引,查询,数据建模和基本文本搜索以及Map-Reduce等内容。
Mongo的一个重要的特性是可扩展性,因此你还将学习如何将Mongo与真实应用程序结合使用,并且练习课程非常详细。本书的一大特点就代码示例十分干净整洁,它非常适合作为介绍性指南,但也适用于想要转换到MongoDB的SQL用户。
4、《Data Modeling for MongoDB》
任何数据库设计的第一步都是数据模型。这是开发人员创建单独数据关系以定义数据库结构的方式。通过MongoDB的数据建模,你将深入了解NoSQL的专业数据建模过程。最后一章还介绍了一些案例研究,以便你了解数据建模如何在实际项目中发挥作用。
本书适合具有一定Mongo基础,并且希望更深入了解实际应用的程序员
6、《Scaling MongoDB》
这本书很短,不到100页,但它却讲解的非常详细,首先,你将学习分片和分割数据/查询。然后,您将深入研究集群的工作方式以及如何在Mongo环境中设置集群。后面的章节将介绍数据库管理以及如何组织MongoDB以便更轻松地扩展Web应用程序。
这些内容在网上都很容易找到,但是都没有这本书详细,这也是我极力推荐这本书的原因之一
8、《Web Development with MongoDB and NodeJS》
本书教你使用MongoDB和NodeJS进行Web开发,它只有300页,但它涵盖了从建立环境到构建你的第一个应用程序,接着使用大量功能扩展它的许多方面,每章都涵盖不同的内容,看完本书你还能学会使用Node / JavaScript并在线构建逼真的应用程序
8、《Pro Hibernate and MongoDB》
开源Hibernate框架允许开发人员在Java中映射OOP代码的数据类型。这在MongoDB中尤其有效,因为它们完全兼容,开箱即用。这本书展示了使用这两种工具可以做些什么,里面提供了大量的Java代码,因此如果你已经拥有一些Java经验,那么它是最好的,当然无论你的技能水平如何,本书的练习题都很好理解
9、《MongoDB Applied Design Patterns》
本书展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计模式应用到许多挑战性领域,例如电子商务、内容管理系统和在线游戏。通过使用Python和JavaScript代码示例,还能了解MongoDB如何扩展数据模型,同时还可以简化开发模型。
10、《MongoDB 参考手册》
本书从如何使用各种配置在不同的模式下初始化服务器开始,你将学到包括高级查询、mongodb特性以及 利用mms进行监控和备份在内的诸多技巧。
11、《50 Tips and Tricks for MongoDB Developers》
如果你喜欢快速参考指南,那这本书就是一本非常方便的书,我不认为这本书适合每个人,因为它很短,非常简短,本书共有68页,书中提供了一些在现实世界中使用MongoDB的好技巧,这些技巧还附带了如何将它们应用于项目的小解释。