Cassandra学习笔记

Cassandra学习笔记
2011年11月16日
   http://cassandra.apache.org/
  http://java.net/projects/jna/downloads
  特点:弱一致性(可调一致性),分布式(自动切片)、无中心(自动协调节点操作),高可用性(副本因子决定数据在集群中的多个节点复制,副本放置策略可以决定副本存于本数据中心、或另一数据中心和 本中心的其他机架、或其他数据中心和本中心的其他机架)。
  转变思维:使用丰富有意义的列名、以查询模型为中心建模(而不是一数据模型为中心建模,SQL)、一行之中有很多列对cassandra来说是家常便饭,在cassandra0.7中,每行可以容纳20亿列之多。每行有key、海量的column。
  应用场景:大规模部署(分布式,可单节点部署,但体现不出优势)、写密集。
  数据模型:cluster、keyspace、column family、row、column/super column。
  Cassandra分布式使用gossip协议通讯,使用Phi增量故障检测算法对节点进行检测。增量故障检测机制不是简单的判定节点离线/在线,而是给出离线“嫌疑”。通过指定 “嫌疑”度,调整故障检测的灵敏度。
  Cassandra使用“墓碑”软删除。
  [ClusterName]
  [Keyspace][ColumnFamily][RowKey][SuperColumn][Column]
  列族选项:
  column_type Standard | Super
  clock_type Timestamp
  comparator AsciiType、BytesType、LexicalUUIDType、IntegerType、LongType、TimeUUIDType、UTF8Type
  subcomparator
  reconciler Timestamp
  comment 备注
  rows_cached 行缓存数量
  preload_row_cache 自动加载行缓存
  key_cache_size 缓存的键值数量
  read_repair_chance 0.0~1.0
  分区器,指定行键值排序和影响数据在节点的分布:
  随机分区器
  有序分区器
  配页有序分区器
  字节序风分区器
  分布式的一致性:
  顺序一致性(严格一致性)
  因果一致性
  最终一致性(弱一致性)
  数据库大观:
  关系数据库
  对象数据库 Cache(InterSystems)
  XML数据库 Tamino(SoftwareAG)、Berkeley XML DB(Oracle)
  文档数据库 Lotus(IBM)、CouchDB(Apache)、MongoDB、Riak
  图数据库 FlockDB(Twitter)
  键值存储与分布式哈希表 Dynamo(Amazon) 、SimpleDB、Dynomite(Microsoft)、Redis(VMWare)、MemcacheD、MemcacheDB
  列数据库 Bigtable(Google)、HBase(Aapche)、Hypertable、Cassandra(Apache)
  CAP理论
  
  
  
  JAN.tar放入./lib目录
  启动
  ./bin/cassandra -f
  客户端
  ./bin/cassandra-cli
  ] help
  ] connect /
  port:9160
  ] show cluster name
  默认:Test
  ] show keyspaces
  默认:system
  ] show api version
  ] create keyspace mykeyspace with replication_factor=1;
  ] describe mykeyspace;
  ] drop keyspace mykeyspace;
  ] use mykeyspace
  ] create column family user
  ] drop column family user;
  ] rename keyspace mykeyspace newkeyspace
  ] rename column family user newuser;
  ] set user['user1']['fname']='user1'
  ] count user['user1']
  ] get user['user1']
  ] del user['user1']['fname']
  ] del user['user1']
  按键取全部列
  按键取指定列
  按键取指定分片区间列(以列族排序为准:AsciiType、BytesType、LexicalUUIDType、IntegerType、LongType、TimeUUIDType、UTF8Type、)
  配置文件
  cassandra.yaml
  存储位置
  
  
  运行日志
  log4j.appender.R.File=/var/log/cassandra/system.log
  缓存数据文件
  
  /var/lib/cassandra/saved_caches
  
  集群名
  Test Cluster
  种子节点
  seed:
  - 192.168.1.5
  - 192.168.1.7
  autobootstrap 节点自己作为种子节点是,不能指定true
  listen_address:
  rpc_address:
  安全
  1、指定验证类(作为plugin需额外提供)
  authenticator: org.apache.cassandra.auth.AllowAllAuthenticator
  authority: org.apache.cassandra.auth.AllowAllAuthority
  #无验证
  org.apache.cassandra.auth.SimpleAuthenticator #鉴权 passwd.properties
  org.apache.cassandra.auth.SimpleAuthority #授权 access.properties
  #简单验证
  2、告知JVM文件路径
  JVM_OPTS="-Dpasswd.properties=/home/cassandra/conf/passwd.properties -access.properties= /home/cassandra/conf/access.properties"
  3、定义文件内容
  passwd.properties
  mykeyspace=user1,user2,user3
  access.properties
  user1=abc
  user2=123
  user3=xyz
  并发
  concurrent_reads 视CPU核心数定
  concurrent_writes 视并发客户端数定
  启动配置
  cassandra.in.sh(conf/cassandra-env.sh)( cassandra.in.bat)
  JVM_OPTS -Xms2048M -Xmx2048M
  日志配置
  ./conf/log4j-server.properties
  工具
  ./bin/sstablekeys sstable_file_path
  查看SSTable中的键值
  web控制台
  http://github.com/suguru/cassandra-webconsole
  管理
  ./bin/nodetool
  avro
  thrift
  需要http://thrift.apache.org
  thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份thrift脚本,即可自动获得其它开发语言的代码(比如 c++ java python ruby c# haskell ocmal erlang cocoa php squeak).
  需要http://www.boost.org
  编译thrift
  可能需要php5.2+
  ./bootstrap.sh 可能不需要
  ./configure
  ./make
  ./make install
  cd ./lib/
  ./make
  which thrift
  压力测试
  生成压力脚本
  cd /contrib/py_stress
  ant gen-thrift-py
  stress.py -h
  Cygwin一个windows中的Bash Shell模拟器,允许执行各种linux工具。
  编程接口
  Cassandra提供了多种语言接口,如Java、C++、C#、Python等。正是由于使用了Thrift框架,Cassandra的开发者只需要定义客户端与服务器端之间的相关通信的结构体和接口,并提供一个服务契约文件cassandra.thrift,即可提供多种编程语言接口。在我们下载的Cassandra发行包中,只包含了Java的编程接口。假设我们已经安装好了Thrift,那么通过执行简单的命令就可以获得C#或C++的编程接口。生成C#编程接口如下:thrift -gen csharp cassandra.thrift 生成C++编程接口如下:thrift -gen cpp cassandra.thrift 在生成编程接口的代码中,thrift是我们安装的可执行文件,-gen命令后面带的参数是需要生成代码的种类,csharp代表C#,cpp代表C++,最后一个参数cassandra.thrift代表的是服务的契约文件,这个文件在Cassandra的发行包中interface目录下。只需查看cassandra.thrift即可了解编程接口定义。
  数据类型
  Column
  SuperColumn
  ColumnOrSuperColumn
  ColumnParent
  ColumnPath
  SliceRange
  SlicePredicate
  Deletion
  Mutation
  KeyRange
  KeySlice
  TokenRange
  AuthenticationRequest
  ConsistencyLevel
  NotFoundException
  InvalidRequestException
  UnavailableException
  TimedOutException

你可能感兴趣的:(技术杂绘)