对于大多数做技术的人员,都知道我们传统数据库是什么样子的,那么如下图所示,我们操作的对象是行。
也就是增删改查,都是以为对象。
图1
下面我们以mysql为例:
![](https://i-blog.csdnimg.cn/blog_migrate/38d58ade8c12f58b89d323e38fe1858d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/6eec1a389781f28af35a63b913e21c50.jpeg)
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/af5cba6fbb696a1f55b56bb994a787bc.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0e1d3a03ea9d56e17a60684ffde1c7f9.jpeg)
图2
以hbase为例:
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/b906f7064d7135e532401cd71a616eaf.jpeg)
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/cac6c6426c74f3423b0c68504e64399b.jpeg)
上面我们看到了
1所示是什么,我们在传统数据块里面根本没有,这是nosql所特有的,是一个rowkey,是系统自带的,也是nosql中一条记录的唯一标识。但是这个唯一标识,有跟我们的传统数据库是有所差别的。如图1所示,“记录1”便是rowkey.
2所示是我们插入的列user_Name,这也是最难以理解的地方,列竟然可以插入。并且其’value‘为3即'aboutyun'
我们插入了列,下面我们来查看一下效果:
![](https://i-blog.csdnimg.cn/blog_migrate/f441dcd05e3dd28208112f8ca760474d.jpeg)
下面来解释一下上面的含义:
我们会看到
1为rowkey,插入数据’www.aboutyun.com‘,
2为列族下面列的名字user_Name
3我们并没有在设计的添加这个列族,所以这个是系统自带的,这个是记录的操作时间,以时间戳的形式放到hbase里面。
4是我们插入的user_Name的值
下面我们再插入password:
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/b429bfafa5f2650605cb899751903e2c.jpeg)
再次查询结果:
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/d02b1c3a6204b330e17b87a7874b8192.jpeg)
到这里,我们看到两行记录,传统数据块认为这是两行数据,对于nosql,这是一条记录。
1.删除列
这里面的删除,没有删除
delete 'blog_user','www.aboutyun.com','userInfo:user_Password'
![](https://i-blog.csdnimg.cn/blog_migrate/7ccfa13c7668be266449bc3ad26e4786.jpeg)
从上面我们看出列被删除了
2.删除记录:
复制代码
这是删除之前显示结果,这里已经是
![](https://i-blog.csdnimg.cn/blog_migrate/80c7cf4a6066c9fce00f329004973fe9.jpeg)
删除后结果
![](https://i-blog.csdnimg.cn/blog_migrate/93e2e74ab3147563b788f7b0d6bbe035.jpeg)
总结
对于传统数据库,增加列对于一个项目来讲,改变是非常大的。但是对于nosql,插入列和删除列,跟传统数据库里面的增加记录和删除记录类似
也就是增删改查,都是以为对象。
1.传统数据库增加删除介绍
![](https://i-blog.csdnimg.cn/blog_migrate/c851f3c80ff62443e4487b0697a9bec4.jpeg)
下面我们以mysql为例:
![](https://i-blog.csdnimg.cn/blog_migrate/38d58ade8c12f58b89d323e38fe1858d.jpeg)
插入数据
- mysql>INSERT INTO blog_user (`user_Name`,`user_Password`,`user_emial`)VALUES ('aboutyun','aboutyun', 'aboutyun@sina.com');
mysql>INSERT INTO blog_user (`user_Name`,`user_Password`,`user_emial`)VALUES ('aboutyun','aboutyun', 'aboutyun@sina.com');
![](https://i-blog.csdnimg.cn/blog_migrate/6eec1a389781f28af35a63b913e21c50.jpeg)
删除数据
- mysql> delete from blog_user where user_name="aboutyun";
mysql> delete from blog_user where user_name="aboutyun";
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/af5cba6fbb696a1f55b56bb994a787bc.jpeg)
2.Nosql数据库增加删除介绍
![](https://i-blog.csdnimg.cn/blog_migrate/0e1d3a03ea9d56e17a60684ffde1c7f9.jpeg)
图2
以hbase为例:
创建表
- create 'blog_user','userInfo'
create 'blog_user','userInfo'
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/b906f7064d7135e532401cd71a616eaf.jpeg)
插入数据
这里是关键点,也是很多人不容易理解的地方- hbase(main):012:0> put'blog_user','www.aboutyun.com','userInfo:user_Name','aboutyun'
- 0 row(s) in 1.7530 seconds
hbase(main):012:0> put'blog_user','www.aboutyun.com','userInfo:user_Name','aboutyun'
0 row(s) in 1.7530 seconds
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/cac6c6426c74f3423b0c68504e64399b.jpeg)
上面我们看到了
1所示是什么,我们在传统数据块里面根本没有,这是nosql所特有的,是一个rowkey,是系统自带的,也是nosql中一条记录的唯一标识。但是这个唯一标识,有跟我们的传统数据库是有所差别的。如图1所示,“记录1”便是rowkey.
2所示是我们插入的列user_Name,这也是最难以理解的地方,列竟然可以插入。并且其’value‘为3即'aboutyun'
我们插入了列,下面我们来查看一下效果:
![](https://i-blog.csdnimg.cn/blog_migrate/f441dcd05e3dd28208112f8ca760474d.jpeg)
下面来解释一下上面的含义:
我们会看到
1为rowkey,插入数据’www.aboutyun.com‘,
2为列族下面列的名字user_Name
3我们并没有在设计的添加这个列族,所以这个是系统自带的,这个是记录的操作时间,以时间戳的形式放到hbase里面。
4是我们插入的user_Name的值
下面我们再插入password:
- put'blog_user','www.aboutyun.com','userInfo:user_Password','aboutyun'
put'blog_user','www.aboutyun.com','userInfo:user_Password','aboutyun'
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/b429bfafa5f2650605cb899751903e2c.jpeg)
再次查询结果:
- hbase(main):016:0> scan 'blog_user'
- ROW COLUMN+CELL
- www.aboutyun.com column=userInfo:user_Name, timestamp=1400663775901, value=aboutyun
- www.aboutyun.com column=userInfo:user_Password, timestamp=1400665203430, value=aboutyun
- 1 row(s) in 0.0390 seconds
hbase(main):016:0> scan 'blog_user'
ROW COLUMN+CELL
www.aboutyun.com column=userInfo:user_Name, timestamp=1400663775901, value=aboutyun
www.aboutyun.com column=userInfo:user_Password, timestamp=1400665203430, value=aboutyun
1 row(s) in 0.0390 seconds
复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/d02b1c3a6204b330e17b87a7874b8192.jpeg)
到这里,我们看到两行记录,传统数据块认为这是两行数据,对于nosql,这是一条记录。
删除列数据
删除数据分为删除列和删除记录1.删除列
这里面的删除,没有删除
delete 'blog_user','www.aboutyun.com','userInfo:user_Password'
![](https://i-blog.csdnimg.cn/blog_migrate/7ccfa13c7668be266449bc3ad26e4786.jpeg)
从上面我们看出列被删除了
2.删除记录:
- deleteall 'blog_user','www.aboutyun.com'
deleteall 'blog_user','www.aboutyun.com'
复制代码
这是删除之前显示结果,这里已经是
![](https://i-blog.csdnimg.cn/blog_migrate/80c7cf4a6066c9fce00f329004973fe9.jpeg)
删除后结果
![](https://i-blog.csdnimg.cn/blog_migrate/93e2e74ab3147563b788f7b0d6bbe035.jpeg)
总结
对于传统数据库,增加列对于一个项目来讲,改变是非常大的。但是对于nosql,插入列和删除列,跟传统数据库里面的增加记录和删除记录类似