123
返回列表 发新帖
楼主: jieforest

Cassandra基础

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
21#
 楼主| 发表于 2015-11-30 14:35 | 只看该作者
查询写入时间
SELECTWRITETIME(first_name) from emp;可查的该数据何时被插入。
添加columns
ALTER TABLEemp ADD address varchar;
更改column数据类型
ALTER TABLEemp ALTER address TYPE text;
移除数据
2  指定过期时间(同上)
2  删除table或keyspace
DROP TABLE table_name
DROP KEYSPACE keyspace_name;
2  删除columns和rows
DELETE last_name FROM emp WHEREempid=104 and deptid=15;
DELETE FROM emp WHERE empid=104 anddeptid=15;

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
22#
 楼主| 发表于 2015-11-30 14:36 | 只看该作者
使用collection类型
2  set类型
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  last_name text,
  emails set<text>
);
n  INSERT INTO users (user_id, first_name, last_name, emails) VALUES('frodo','Frodo', 'Baggins', {'f@baggins.com', 'baggins@gmail.com'});
n  UPDATE users SET emails = emails + {'fb@friendsofmordor.org'} WHEREuser_id = 'frodo';
n  UPDATE users SET emails = emails - {'fb@friendsofmordor.org'} WHEREuser_id = 'frodo';
n  UPDATE users SET emails = {} WHERE user_id = 'frodo';
n  DELETE emails FROM users WHERE user_id = 'frodo';
2  list类型
n  ALTER TABLE users ADD top_places list<text>;
n  UPDATE users SET top_places = [ 'rivendell', 'rohan' ] WHERE user_id= 'frodo';
n  UPDATE users SET top_places = [ 'the shire' ] + top_places WHEREuser_id = 'frodo';
n  UPDATE users SET top_places = top_places + [ 'mordor' ] WHEREuser_id = 'frodo';
n  UPDATE users SET top_places[2] = 'riddermark' WHERE user_id ='frodo';
n  DELETE top_places[3] FROM users WHERE user_id = 'frodo';
n  UPDATE users SET top_places = top_places - ['rivendell'] WHEREuser_id = 'frodo';

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
23#
 楼主| 发表于 2015-11-30 15:40 | 只看该作者
2  map类型
n  ALTER TABLE users ADD todo map<timestamp, text>;
n  UPDATE users SET todo =
  { '2012-9-24' : 'entermordor',
  '2012-10-2 12:00' : 'throwring into mount doom' }
WHERE user_id = 'frodo';
n  UPDATE users SET todo['2012-10-2 12:00'] = 'throw my precious intomount doom'WHERE user_id = 'frodo';
n  INSERT INTO users (user_id,todo)  VALUES ('miaohan', { '2013-9-22 12:01' : 'birthday wishes to Bilbo',  '2013-10-1 18:00' : 'Check into Inn of Prancing Pony' });
n  DELETE todo['2012-9-24'] FROM users WHERE user_id = 'frodo';
n  UPDATE users USING TTL 60 SET todo['2012-10-1'] = 'find water' WHEREuser_id = 'frodo';

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
24#
 楼主| 发表于 2015-11-30 15:40 | 只看该作者
注;可为上述三种集合类型的每个元素设置单独的过期时间。
创建和使用索引
CREATE INDEXlast_name_key ON users(last_name);
SELECT * FROMusers WHERE last_name = 'Baggins'(需创建了索引才能在WHERE中使用该列进行查询,暂无多列索引,需逐列分别建立索引)
轻量级事务
使用IF从句实现
n  INSERT INTO emp(empid,deptid,address,first_name,last_name) VALUES(102,14,'luoyang','Jane Doe','li') IF NOT EXISTS;
n  UPDATE emp SET address = 'luoyang' WHERE empid = 103 and deptid = 16IF last_name='zhang';
使用counter
用于记录特定时间或处理的次数。对应的column需使用counter数据类型,该类数据一般存储于专门的表中,且使用UPDATE载入并增减counter值,不使用INSERT插入counter值。只能在原数值的基础上增减,不能为直接指定一个数值。
CREATEKEYSPACE counterks WITH REPLICATION = { 'class' : 'SimpleStrategy','replication_factor' : 3 };
CREATE TABLEcounterks.page_view_counts
  (counter_valuecounter,
  url_name varchar,
  page_name varchar,
  PRIMARY KEY (url_name, page_name)
);
UPDATEcounterks.page_view_counts
SET counter_value = counter_value + 1
WHERE url_name='www.datastax.com' ANDpage_name='home';

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
25#
 楼主| 发表于 2015-11-30 15:41 | 只看该作者
若原来不存在WHERE条件中指定的内容,该条语句会将表中的url_name值置为'www.datastax.com'将page_name置为’home’,将counter_value指定为默认初始值0加1。若WHERE条件中指定的内容存在,则将counter_value置为原来的counter_value加1
UPDATEcounterks.page_view_counts
SET counter_value = counter_value + 2
WHERE url_name='www.baidu.com' ANDpage_name='map';
更多CQL内容请参见:http://www.datastax.com/documentation/cql/3.1/webhelp/index.html
6安全
三方面安全策略
Ø  Client-to-node/node-to-node加密(SSL):加密传输的数据
Ø  基于登录账户/密码的认证:确定谁可以使用数据库
Ø  对象授权管理:确定用户可在在数据库上干什么

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
26#
 楼主| 发表于 2015-11-30 15:42 | 只看该作者
若原来不存在WHERE条件中指定的内容,该条语句会将表中的url_name值置为'www.datastax.com'将page_name置为’home’,将counter_value指定为默认初始值0加1。若WHERE条件中指定的内容存在,则将counter_value置为原来的counter_value加1
UPDATEcounterks.page_view_counts
SET counter_value = counter_value + 2
WHERE url_name='www.baidu.com' ANDpage_name='map';
更多CQL内容请参见:http://www.datastax.com/documentation/cql/3.1/webhelp/index.html

6安全

三方面安全策略
1) Client-to-node/node-to-node加密(SSL):加密传输的数据
2) 基于登录账户/密码的认证:确定谁可以使用数据库
3) 对象授权管理:确定用户可在在数据库上干什么用Qt5重写UI的Wireshark 2.0版发布

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
27#
 楼主| 发表于 2015-12-1 15:09 | 只看该作者
6.1 SSL加密

6.1.1Client-to-node

准备证书
Ø  为每个节点产生私钥/公钥对
keytool-genkey -alias cassandra_vms00780 -keystore ~/keys/.keystore
Ø  导出公钥部分到单独的证书文件,并拷贝该文件到其他所有节点
keytool-export -alias cassandra_vms00780 -file ~keys/cassandra_vms00780.cer -keystore ~/keys/.keystore
Ø  将每个节点的证书添加到所有节点的信任库中
keytool-import -v -trustcacerts -alias cassandra_vms00780 -file cassandra_vms00780.cer–keystore  ~/keys/ .truststore
Ø  保证将.keystore和truststore文件分发到所有节点
Ø  确认.keystore文件只对Cassandradaemon可读

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
28#
 楼主| 发表于 2015-12-1 15:10 | 只看该作者
6.1 SSL加密

6.1.1Client-to-node

准备证书
1) 为每个节点产生私钥/公钥对
keytool-genkey -alias cassandra_vms00780 -keystore ~/keys/.keystore

2) 导出公钥部分到单独的证书文件,并拷贝该文件到其他所有节点
keytool-export -alias cassandra_vms00780 -file ~keys/cassandra_vms00780.cer -keystore ~/keys/.keystore

3) 将每个节点的证书添加到所有节点的信任库中
keytool-import -v -trustcacerts -alias cassandra_vms00780 -file cassandra_vms00780.cer–keystore  ~/keys/ .truststore

4) 保证将.keystore和truststore文件分发到所有节点

5) 确认.keystore文件只对Cassandradaemon可读

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
29#
 楼主| 发表于 2015-12-1 15:10 | 只看该作者
编辑配置文件
配置cassandra.yaml文件中client_encryption_options部分的参数
  1. client_encryption_options:
  2. enabled: true
  3. keystore: ~keys/.keystore## .keystore file路径
  4. keystore_password:<keystore password> ## 产生keystore时用的密码
  5. truststore: ~keys/.truststore
  6. truststore_password:<truststore password>
  7. require_client_auth:<true or false>
复制代码

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
30#
 楼主| 发表于 2015-12-1 15:10 | 只看该作者
6.1.2node-to-node

准备证书
同上
编辑配置文件
配置cassandra.yaml文件中server_encryption_options部分的参数
  1. server_encryption_options:
  2.    internode_encryption: <internode_option:all/none/dc/rack>
  3.    keystore: ~keys/.keystore
  4.    keystore_password: <keystore password>
  5.    truststore:~keys/.truststore
  6.    truststore_password: <truststorepassword>
  7.    require_client_auth: <true or false>
复制代码

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表