自打Facebook的问世,NOSQL得到了最大力度的宣传与推广,面对海量数据的快速存储及读取,关系性数据库已经显得越来越滞后,目前全世界已经有很多的知名的网站开始使用NOSQL。
NOSQL,从字面上理解,它就不是SQL,它真正的含义其实是指“非关系性数据库”,而我们日常所用到的MYSQL、SQL SERVER、ORACLE等都属于关系性数据库,二者的最明显的区别就是:关系性数据库中各个表之间可以建立关系,取数据时可以根据关系联表查询,而NOSQL则不一样,它内部的数据是以KEY-VALUE的形式进行存储的,通过KEY直接取到VALUE值。
NOSQL发展至今,出现了好几种非关系性数据库,今天就以NOSQL中目前表现最好的MONGODB为例来进行说明。
首先讲讲如何在WINDOWS下安装mongodb(下一篇将会讲如何在linux下安装mongodb)
1.先去官网(http://www.mongodb.org/)下载一个与您的WINDOWS操作系统版本一致的mongodb软件包
2.解压软件包,你会看到解压后的文件夹中有个BIN目录,进去之后会看到很多.exe可执行文件,只用关注两个即可(mongod.exe,mongo.exe)
3.mongod.exe //mongodb的服务器端,运行该执行文件可以设置mongodb的端口号,数据文件存储目录等
mongo.exe //mongodb的客户端,用来连接mongodb并进行相关数据的查询
4.部署,假如我压缩包解压的位置为 d:program files/mongodb/
>> ctrl+r打开运行窗口
>> cmd
>> d:
>> cd program files\mongodb\bin
>> mongod -dbpath h:\data\mongodb\db -logpath h:\data\mongodb\log -install 注:此处是将mongod.exe注册为windows服务,让其开机启动,-logpath在1.4以上的版本中必须存在,否则无法注册成功,log的位置不能和数据文件存放在同一个目录下,同时数据目录及LOG目录需要手动创建,此命令无法自己创建相应的文件夹,否则也无法注册成功
>> 此时mongod.exe还无法随机启动,我们需要修改一下注册表,进入注册表的命令为 regedit,进入注册表后搜索mongodb,找到一个名为imgsrc项,将其中的install改为service即可,此时mongod.exe已能正常启动
>> mongo 此时即可进行客户端与mongodb的连接了,成功后将自动连接mongodb的test库,如果你想连接指定的库,那就使用命令:mongo 数据库名称,如果你将mongodb部署在服务器上,那就使用命令:mongo 服务器IP/数据库名称,此处是"/",而非"\",用错了就无法连接成功。
讲完部署,接下来讲讲它的性能如何,mongodb的数据写入与数据读取速度是关系性数据库的很多倍以上,具体多少倍可以去看看老赵的空间,他有进行相关的测试,MONGODB现在已经被国内很多网站用来记录网站的日志。MONGODB也属于内存数据库,它会自动将一些数据缓存到内存中,这个我想也是大家平时自己会去做的事情,毕竟占内存总比占CPU好,MONGODB支持分布式部署,这样我们可以分多台服务器来进行部署。注:MONGODB不建议部署在windows 32的机器上,当数据超过2G的时候会出问题,官方建议安装在windows 64位或linux上。(随着microsoft在全球范围内打击盗版的力度越来越大,加之国外的开源软件都慢慢的转向LINUX平台,我们这些跟着微软走的people也该学着跨跨平台了,为了大家今后更好的发展,可以自学一下python或者是ruby)
讲完性能,接下来讲讲它的应用环境,MONGODB有好处,那么自然也有它不足的地方,相对于关系性数据库来说,它的安全性就大打折扣了,所以我们应该有选择性的使用,譬如网站的日志记录,网站访问统计等可以使用MONGODB来进行数据存储。
讲完应用,接下来讲讲它的语法:
sql: select * from t_user
mongodb: db.t_user.find()
sql: select count(*) from t_user
mongodb: db.t_user.find().count()
sql: select top 10 * from t_user where id < (select min(id) from (select top 10 id from t_user order by id desc)) order by id desc //分页取第11条到第20条的数据
mongodb: db.t_user.find().limit(10).skip(10).sort({})
sql: update t_user set username='lucky' where id=1
mongodb: db.t_user.update({id:1},{username:"lucky"})
sql: delete t_user where id=1
mongodb: db.t_user.delete({id:1})
......
还有很多语句在这里就不一一写出了,大家可以查看帮助,命令:db.help()-查看与数据库操作有关的帮助,db.t_user.help()-查看与表有关的帮助
mongodb针对目前几乎所有的语言都有相关的驱动,针对.net的驱动名称为mongodb.driver,大家去google上搜一下便有下载链接,还会有相应的实例,mongodb在.net下的应用看看它里面包含的实例就能搞定了,挺简单的,唯独group by语法相对复杂一点,如果有能够帮得上大家的地方,可以给我留言。