数据库
数据库,顾名思义,是数据存储的仓库,主要功能有两个:
1、有组织地存放数据
与在磁盘上自己存放文件不同,数据库替用户组织了数据的存储形式,用户只需要按照数据库提供的接口将数据写入,数据便会按照标准的格式被存储起来。
2、按照不同的需求进行查询
数据库不仅要能写入数据,还支持数据查询,并且能够按照不同的需求进行查询。因为存储是有组织的,因此查询上可以更规范化,查询速度也会快很多。
不同的数据库的区别就是存放数据的组织不同,同时提供了不同种类的查询。用户可以按照自己的需求,选择合适的数据库。
【分类】
数据库的分类有很多种,按照对SQL语言的支持,可以分为以下两种:
1、SQL数据库又叫关系型数据库,比如Oracle、Mysql等。
2、NoSQL数据库又叫非关系型数据库,比如Redis、MongoDB等。
随着在规模互联网应用的出现,传统的SQL数据库遇到了一些设计上的弊端。比如,SQL对表的定义使应用不够灵活,横向扩展比较困难。与一些特性难以满足相比,反而是SQL数据库的很多特性没有用武之地。比如,在很多场景下,及时存取并不是必要的,也没有特别多的事务需求,而这些额外的特性消耗着SQL数据库的性能。
因此NoSQL数据库应运而生,NoSQL全称是Not Only SQL,意即"不仅仅是SQL"。但事实上,绝大多数NoSQL数据库都放弃了对SQL语言的支持。与SQL关系型数据库相比,NoSQL非关系型数据库大多放弃了一些特性。比如,放弃了实时一致性、对事务的完整支持以及多表查询等。听起来缺点很多,但收益也明显,NoSQL数据库简单便捷、方便扩展,并且有更好的性能。
【区别】
实质:非关系型数据库产品是传统关系型数据库的功能阉割版,通过减少用不到或很少用的功能,来大幅度提高产品性能。
价格:目前的非关系型数据库基本都是免费的,而比较有名气的关系型数据库都是收费的,比如:Oracle、DB2、MSSQL。MySql虽然是免费的,但是处理大型数据还是要提前作很多工作的。
功能:实际开发中,很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。
了解关系型数据库和非关系型数据库的区别后,需要有一点的取舍,比较复杂和大型的项目不建议使用非关系型数据库,但是如果想写个博客,CMS系统这类业务逻辑不复杂的程序,MongoDB是完全可以胜任的。
MogoDB简介
MongoDB是一个开源的NoSQL数据库,在国内被称为芒果数据库。Linux、Apache、MySQL和PHP组成了非常有名的LAMP架构。现在,有人提议将LAMP中的代表M的MySQL替换为MongoDB。
NoSQL数据库有很多,为什么要选择MongoDB呢?
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB使用集合(collection)和文档(document)来描述和存储数据,集合(collection)就相当于表,文档(document)相当于行,字段相当于列,不像MySQL之类的关系型数据库,表结构是固定的,比如某一行由若干列组成,行行都一样,而MongoDB不同,一个集合里的多个文档可以有不同的结构,更灵活一些。
MongoDB有自己很鲜明的特色,总结起来有以下4条:
1、没有表结构的限制
传统SQL数据库中,对每张表都需要定义表结构。如果有新的存储需求,往往需要添加新的字段,更改表结构。在一些场景下,会显得很不方便,而对于MongoDB,这不再是问题。因为它没有表结构这个概念,在使用一张表之前,不需要对这张表进行任何初始化操作。MongoDB的这种特性对快捷开发和多变的业务需求是很合适的。
2、完全的索引支持
有些NoSQL数据库,比如redis,它是内存数据库,速度很快。但是,做为键值数据库,只支持一种按键查询的方式。灵活性、使用范围和易用性都受到影响;再比如hbase,写入速度很快。但是,同样查询受限,它只支持单索引,二级索引需要自己实现。而MongoDB支持单键索引、多键索引、全文索引和地理位置索引。所以MongoDB是功能非常完善的NoSQL数据库,也被称为最接近关系数据库的非关系数据库。
3、良好的数据安全性和方便的规模扩展
MongoDB使用复制集做多副本存储,以保证数据的安全性。同时,MongoDB内置的分片技术可以很方便地进行数据规模的扩展。分片技术是很新颖的一个特性,它包含了自动数据接口,动态扩容和缩容等一系列在其他数据库中需要大量人工操作的工作,同时提供了对数据库的统一访问入口,不需要在应用层再进行分发,显著减少了人工成本。
4、完善的文档支持和驱动支持。
安装
直接在MogoDB官网下载对应系统的版本,我用的是v4.0.6,系统是mac osx,将下载好的压缩包解压到/usr/local,并重命名为mongodb,mac osx系统的访达默认是不显示的/usr的,command + shift + G
,输入/usr/local
。
【配置环境变量】
cd ~
如果之前配置过环境变量,会有一个.bash_profile文件,如果没有,则创建一个该文件touch .bash_profile
vim编辑保存 export PATH="/usr/local/mongodb/bin:$PATH"
更新刚配置的环境变量 source .bash_profile
【创建数据库存储目录】
sudo mkdir -p /data/db
启动 mongodb,默认数据库目录即为 /data/db。
sudo mongod
启动数据库,这时候服务就可以开启了,链接默认端口是27017,在浏览器中输入 127.0.0.1:27017。
显示 It looks like you are trying to access MongoDB over HTTP on the native driver port. 则启动成功。
服务端开启后,我们可以使用命令行来链接服务端,链接命令是mongo。重新打开一个命令行工具,然后输入sudo mongo
。
查看存在数据库命令:show dbs
查看数据库版本命令:db.version()
如果这两条命令都可以正常的显示出结果,证明我们的MongoDB数据库已经安装成功了。