NoSQL

NoSQL
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
NoSQL数据库的四大分类
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。
NoSQL数据库的四大分类表格分析
在这里插入图片描述
CAP理论
在这里插入图片描述

  1. 一致性(Consistency):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的; , 数据一致更新,所有数据变动都是同步的 ,客户能够感知到一系列操作会一下子执行完毕。
    即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。
  2. 可用性(Availability):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的。 好的响应性能 ,每一个操作必须有意想中的响应并终止。
    即服务一直可用,而且是正常响应时间。
  3. 分区容忍性(Partition Tolerance): 在出现网络分区(比如断网)的情况下,分离的系统也能正常运行。具有很高的可靠性 ,操作均能够执行完毕,即使个别组件不可用。
    即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务
    第一步,确定目标:
    目前的环境是Linux CentOS,安装memcached,然后学习下基本的使用。

第二步,下载安装包:
由于安装libevent是安装memcached的前提,所以此处我们需要下载两个安装包,分别是libevent和memcached。
1.下载libevent,我在http://libevent.org/这里下载了最新的版本 libevent-2.0.22-stable.tar.gz
2.下载memcached,我在http://memcached.org/这里下载了最新的版本 memcached-1.4.22.tar.gz
3.将下载好的安装包通过FileZilla等ftp工具上传到我的linux环境中,目录分别是 /myself_settings/libevent 和 /myself_settings/memcached

第三步,准备依次安装libevent和memcached:
1.使用cd命令打开到 /myself_settings/libevent。
2.使用命令tar -xzvf libevent-2.0.22-stable.tar.gz ,将安装包解压缩,然后再cd到解压缩后的 libevent-2.0.22-stable 文件夹中。
3.我们要使用configure命令安装,安装目录应该在/usr/lib中,为了以后管理方便,此处我提前在/usr/lib文件中建立了一个新的文件夹libevent
4.执行命令: ./configure --prefix=/usr/lib/libevent (作用是配置)
5.执行命令: make (作用是编译)
6.执行命令: make install (作用是安装)
7.至此,libevent应该是安装完毕的,我们可以使用命令 ls -al /usr/lib/libevent/lib 来查看libevent是否安装成功。

 1 drwxr-xr-x 3 root root    4096 Feb 23 17:06 .
 2 drwxr-xr-x 5 root root    4096 Feb 23 17:06 ..
 3 lrwxrwxrwx 1 root root      21 Feb 23 17:06 libevent-2.0.so.5 -> libevent-2.0.so.5.1.9
 4 -rwxr-xr-x 1 root root  975704 Feb 23 17:06 libevent-2.0.so.5.1.9
 5 -rw-r--r-- 1 root root 1586288 Feb 23 17:06 libevent.a
 6 lrwxrwxrwx 1 root root      26 Feb 23 17:06 libevent_core-2.0.so.5 -> libevent_core-2.0.so.5.1.9
 7 -rwxr-xr-x 1 root root  578875 Feb 23 17:06 libevent_core-2.0.so.5.1.9
 8 -rw-r--r-- 1 root root  968792 Feb 23 17:06 libevent_core.a
 9 -rwxr-xr-x 1 root root     970 Feb 23 17:06 libevent_core.la
10 lrwxrwxrwx 1 root root      26 Feb 23 17:06 libevent_core.so -> libevent_core-2.0.so.5.1.9
11 lrwxrwxrwx 1 root root      27 Feb 23 17:06 libevent_extra-2.0.so.5 -> libevent_extra-2.0.so.5.1.9
12 -rwxr-xr-x 1 root root  417629 Feb 23 17:06 libevent_extra-2.0.so.5.1.9
13 -rw-r--r-- 1 root root  617568 Feb 23 17:06 libevent_extra.a
14 -rwxr-xr-x 1 root root     977 Feb 23 17:06 libevent_extra.la
15 lrwxrwxrwx 1 root root      27 Feb 23 17:06 libevent_extra.so -> libevent_extra-2.0.so.5.1.9
16 -rwxr-xr-x 1 root root     935 Feb 23 17:06 libevent.la
17 lrwxrwxrwx 1 root root      30 Feb 23 17:06 libevent_pthreads-2.0.so.5 -> libevent_pthreads-2.0.so.5.1.9
18 -rwxr-xr-x 1 root root   18142 Feb 23 17:06 libevent_pthreads-2.0.so.5.1.9
19 -rw-r--r-- 1 root root   18806 Feb 23 17:06 libevent_pthreads.a
20 -rwxr-xr-x 1 root root     998 Feb 23 17:06 libevent_pthreads.la
21 lrwxrwxrwx 1 root root      30 Feb 23 17:06 libevent_pthreads.so -> libevent_pthreads-2.0.so.5.1.9
22 lrwxrwxrwx 1 root root      21 Feb 23 17:06 libevent.so -> libevent-2.0.so.5.1.9
23 drwxr-xr-x 2 root root    4096 Feb 23 17:06 pkgconfig

下面我们要安装的是memcache,首先还是和上边处理libevent一样,先将安装包解压缩,然后cd到解压缩后的 memcached-1.4.22 文件夹中。
9.执行命令: ./configure --with-libevent=/usr/lib/libevent (作用是配置,此处要注意关联之前安装libevent的路径 /usr/lib/libevent)
10.执行命令: make (作用是编译)
11.执行命令: make install (作用是安装)
12.至此,memcached安装完毕,可以用命令 ls -al/usr/local/bin/mem*,查看memcached是否安装成功。

rwxr-xr-x 1 root root 325816 Feb 23 17:10 memcached

第四步,启动memcached服务,命令如下:

/usr/local/bin/memcached -d -m 10 -u root -l 192.168.25.26 -p 14885 -c 256 -P /tmp/memcached.pid -vv >> /tmp/memcached.log 2>&1  

:如果memcached启动成功,我们可以使用 ps -ef|grep memcached,查看是否启动,如下所示:

 1 root     14742     1  0 18:59 ?        00:00:00 /usr/local/bin/memcached -d -m 10 -u root -l 192.168.25.26 -p 14885 -c 256 -P /tmp/memcached.pid -vv
2 root     14806  3537  0 19:46 pts/2    00:00:00 grep memcached

第五步,关闭memcached服务,命令如下:

 kill `cat /tmp/memcached.pid`

第六步,测试memcached

2.我们下边测试的时候,会用到telnet命令,很多linux环境默认是没有telnet环境的,如果我们输入telnet命令很有可能会碰到诸如 -bash:telnet:command not found 这样的错误,我们可以通过以下步骤来安装telnet环境:
(1).通过 rpm -qa|grep telnet 和 rpm -qa|grep telnet-server 这两个命令确认是否安装客户端和服务器端,一般情况下,会默认有客户端,没有服务器端,而安装memcached的这台服务器必须要安装telnet-server。
(2).yum -y install telnet 如果没有不客户端,安装客户端
(3).yum install telnet-server 安装服务器端
(4).编辑/etc/xinetd.d/telnet, 将其中的 disable = yes 的yes改为no 修改配置
(5).service xinetd restart 重启服务
3.解决了上边的问题,我们可以实验一把set命令,命令的参数参考我在1中提到的两篇文章,详细如下:

 1 [root@localhost /]# telnet 192.168.25.26 14885
 2 Trying 192.168.25.26...
 3 Connected to 192.168.25.26 (192.168.25.26).
 4 Escape character is '^]'.
 5 set username 0 0 4
 6 hero
 7 STORED
 8 get username
 9 VALUE username 0 4
10 hero
11 END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值