成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解NoSQL數據庫Apache Cassandra的配置

數據庫 其他數據庫
本文將為大家介紹NoSQL數據庫Apache Cassandra的配置與相關問題,隨著Twitter與Digg投奔NoSQL,傳統關系數據庫已經日顯疲態。

在這里我們將介紹的是NoSQL數據庫Apache Cassandra的配置與相關問題。現在數據庫市場對于NoSQL的關注度日益升高,我們也該看到未來數據庫技術的變革

上次說了安裝的問題,可以參考《VirtualBox 虛擬機 Debian系統上安裝Cassandra步驟及遇到的問題》。當然,在windows下也可以使用,但是要設置JAVA_HOME參數,然后啟動目錄bin里的cassandra.bat。編輯cassandra.bat看到

  1. if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD% 

改成

  1. if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=F:\apache-cassandra-0.5.1 

“F:\apache-cassandra-0.5.1”是我的安裝目錄。

一、cassandra的單節點服務器配置

先說下cassandra的配置,還是講Linux下的。需要配置的文件一共有三個,當然,也可以使用默認配置。

這個三個文件分別是:

bin/cassandra.in.sh

conf/log4j.properties

conf/storage-conf.xml

其中,log4j.properties是日志的配置,其它兩個是配置的運行環境。

cassandra.in.sh文件一般不需要調整,當然,加入你沒有使用alternatives調整java的默認環境,而你又需要使用jre6.0,這種情況下,可以設置cassandra.in.sh中

 

  1. #JAVA_HOME=/usr/local/jdk6 

JAVA_HOME=/usr/local/jre6   #這里是你的jre解壓縮的路徑

log4j.properties的配置網上講的很多,就不說了。

storage-conf.xml的配置是最重要的。

第一個是Keyspaces,這個默認只設置了Keyspace1,可以增加另外的Keyspaces??蛻舳苏{用需要使用這個名字。

Keyspace節點中的KeysCachedFraction設置的鍵索引的內存大小。說明上也寫了,假如鍵的數量較少,長度較長,可以增加這個值。而設置為0,則是禁用。

接下來是設置ColumnFamily,這里配置的名稱,在客戶端調用時候也要是有。另外還指定了列的類型。

ReplicationFactor設置了副本的數目,這個是在分布式部署中有用,保持數據的冗余,以至于某幾臺服務壞掉,能保證數據完整。

CommitLogDirectory以及接下來的幾行都是設置目錄的,這個就不說了。

Seeds也是和分部署主從服務器部署方式有關的,本文不準備講這個。

ThriftAddress是比較重要的,這個是設置客戶端訪問的,而ThriftPort是設置訪問的端口。接下來的部分是和性能有關的,這些說明可以仔細閱讀。貧道對下面的設置也理解不深入,就不獻丑了。

二、如何編程訪問cassandra

從http://incubator.apache.org/cassandra/找了好久,找到了http://github.com/rantav/hector  (java)。這個是一個訪問cassandra的包裝。很遺憾的是,我使用這個包裝訪問時候,讀取一個Key的值需要7~8秒?。?!暈倒。我開始以為是虛擬機的原因,結果部署到其他兩臺linux服務器上還是一樣。當然這些機器和我的機器都不在同一個網段,我不知道這點是不是會對性能有很大的影響。后來,我放到自己機器上,以及把寫好的程序當道目標機器上,讀取速度變成了20MS每條。性能相差也太大了。一個是速度慢得和螞蟻一樣,而第二次則是坐上烏龜了。

其它語言的訪問包裝可以在http://wiki.apache.org/cassandra/ClientExamples 這里找到。當然,沒有C#的。

三、用C#和Java訪問cassandra

cassandra用到了另外一個好用的東西:thrift。這個東東可以在http://www.thrift-rpc.org/下載。

具體在http://www.thrift-rpc.org/?p=thrift.git;a=shortlog;h=refs/misc/instant,一般點第一個snapshot就行了,這是最新的。版本幾個小時更新一個,太牛叉了。

下載完后,搞到Linux上,解壓。進入目錄后進行安裝。

  1. #chmod +x *  //設置執行權限  
  2. #./bootstrap.sh  
  3. #./configure  
  4. #make  
  5. #make install 

安裝好了,接下來,開始生成操作。

切換到cassandra的interface目錄。

然后,使用/home/xieping/thrift/ompiler/cpp/thrift -gen csharp cassandra.thrift 命令生成。運行該命令后,在interface目錄增加了gen-csharp目錄。把它搞到你的機器,然后,切換到/home/xieping/thrift/lib/csharp目錄。把src目錄搞下來。打開Thrift.csproj文件,右鍵Thrift項目,設置編譯符號為NET_2_0。新建個C#項目,把gen-csharp目錄下的東西添加進去,然后,引用Thrift項目,就可以寫以下代碼調用:

  1. using System;  
  2. using Thrift.Transport;  
  3. using Thrift.Protocol;  
  4. using Apache.Cassandra;namespace TestCa {      
  5. class Program {          
  6. static void Main(string[] args)   
  7. {              
  8. TTransport transport = new TSocket("192.168.93.30", 9160);              
  9. TProtocol protocol = new TBinaryProtocol(transport);              
  10. Cassandra.Client client = new Cassandra.Client(protocol);              
  11. transport.Open();              
  12. System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8;              
  13. long timeStamp = DateTime.Now.Millisecond;            
  14. ColumnPath nameColumnPath = new ColumnPath() {                  
  15. Column_family = "Standard1",                  
  16. Column = utf8Encoding.GetBytes("name")              
  17. };              
  18. client.insert("Keyspace1",                            
  19. "1",                          nameColumnPath,                          
  20. utf8Encoding.GetBytes("測試輸入1"),    
  21. timeStamp,   
  22. ConsistencyLevel.ONE);              
  23. client.insert("Keyspace1",                            
  24. "2",                            
  25. nameColumnPath,                            
  26. utf8Encoding.GetBytes("測試輸入2"),                            
  27. timeStamp,                            
  28. ConsistencyLevel.ONE);              
  29. ColumnOrSuperColumn returnedColumn = client.get("Keyspace1""1", nameColumnPath, ConsistencyLevel.ONE);              
  30. Console.WriteLine("Keyspace1/Standard1 列值: 鍵: {0}, 值: {1}",                                
  31. utf8Encoding.GetString(returnedColumn.Column.Name),                              
  32. utf8Encoding.GetString(returnedColumn.Column.Value));            
  33. transport.Close();              
  34. Console.ReadKey();          
  35. }    }} 

而Java的就變成

/home/xieping/thrift/ompiler/cpp/thrift -gen java cassandra.thrift

java相應的代碼

  1. import static me.prettyprint.cassandra.utils.StringUtils.bytes;  
  2. import java.io.UnsupportedEncodingException;  
  3. import org.apache.cassandra.service.Cassandra;  
  4. import org.apache.cassandra.service.ColumnOrSuperColumn;  
  5. import org.apache.cassandra.service.ColumnPath;  
  6. import org.apache.cassandra.service.ConsistencyLevel;  
  7. import org.apache.cassandra.service.InvalidRequestException;  
  8. import org.apache.cassandra.service.NotFoundException;  
  9. import org.apache.cassandra.service.TimedOutException;  
  10. import org.apache.cassandra.service.UnavailableException;  
  11. import org.apache.thrift.TException;  
  12. import org.apache.thrift.protocol.TBinaryProtocol;  
  13. import org.apache.thrift.protocol.TProtocol;  
  14. import org.apache.thrift.transport.*;public class Program {      
  15. public class s{              
  16. }          
  17. /**     * @param args       
  18. * @throws Exception        
  19. */      
  20. public static void main(String[] args) throws Exception {          
  21. Long startTime = System.currentTimeMillis();           
  22. for(int i = 0;i < 10000;i++){              
  23. run();          
  24. }          
  25. Long endTime = System.currentTimeMillis();         System.out.println("程序運行到此處計算機當前毫秒數 " + startTime);          
  26. System.out.println("程序共計運行 "+ (endTime-startTime)+" 毫秒");      
  27.  }          
  28. static void run() throws InvalidRequestException, UnavailableException, TimedOutException, TException, NotFoundException, UnsupportedEncodingException{        TTransport transport = new TSocket("192.168.93.30",9160);          
  29. TProtocol protocol = new TBinaryProtocol(transport);          
  30. Cassandra.Client client = new Cassandra.Client(protocol);          
  31. transport.open();          
  32. Long timeStamp = System.currentTimeMillis();                   
  33. ColumnPath nameColumnPath = new ColumnPath("Standard1",null,bytes("name"));          
  34. client.insert("Keyspace1",                        
  35. "1",                      nameColumnPath,                        
  36. bytes("測試數據1"),                      timeStamp,                      ConsistencyLevel.ONE);          
  37. client.insert("Keyspace1",                        
  38. "2",                      nameColumnPath,                        
  39. bytes("測試數據2"),                      timeStamp,                      ConsistencyLevel.ONE);          
  40. ColumnOrSuperColumn returnedColumn = client.get("Keyspace1""1", nameColumnPath, ConsistencyLevel.ONE);                  
  41. System.out.println(String.format("key:%s;value:%s",                   
  42. new String(returnedColumn.column.name),                new String(returnedColumn.column.value,"utf-8")));          
  43. transport.close();     
  44.  }    } 
原文標題:facebookde 的 NoSQL數據庫cassandra的配置與調用(java&&c#)
鏈接: http://www.cnblogs.com/birdshover/archive/2010/03/12/1684439.html
【編輯推薦】
  1. 云計算使關系數據庫逐漸落伍
  2. 2009年云數據庫的開發和應用前景
  3. 關系數據庫的末日是否已經來臨
  4. 超越關系型數據庫 pureXML技術應用及展望
  5. 新興數據庫打破整個舊規則
  6. 探尋關系數據庫和ORM的最佳替代者

 

責任編輯:彭凡 來源: 博客園
相關推薦

2012-08-24 09:01:02

IBMdW

2011-08-02 16:08:52

NoSQLMongoDBCassandra

2010-05-31 17:18:39

Cassandra數據

2010-04-01 09:45:38

NoSQL

2015-06-16 10:39:43

NoSQL分布式算法

2010-03-30 10:07:37

NoSQL數據庫

2022-02-17 11:54:18

漏洞數據庫惡意代碼

2024-02-02 10:51:53

2021-09-28 09:25:05

NoSQL數據庫列式數據庫

2011-10-09 09:38:03

OracleNoSQL

2010-05-26 14:37:56

Cassandra數據

2020-10-31 22:01:40

NoSQL數據庫

2017-05-25 10:11:46

數據庫令牌節點

2010-12-09 10:21:26

Cassandra

2011-06-23 18:37:02

Qt 數據庫

2010-07-11 18:42:17

CassandraTwitter

2010-04-02 17:11:45

Oracle數據庫

2024-03-28 09:00:00

NoSQL數據庫

2024-10-10 08:46:28

2011-07-19 09:08:50

JavaNoSQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷激情 | 国产成人在线一区二区 | 五月婷婷激情 | 国产一区二区三区四区三区四 | 色综合网站 | www.亚洲成人网 | 亚洲国产精品激情在线观看 | 国产精品一区二区三区久久久 | 超碰日本 | 欧美色综合天天久久综合精品 | 亚洲午夜精品视频 | 99精品国产一区二区三区 | 久久看片 | 99国产精品一区二区三区 | 黄色av免费网站 | 日韩一区二区三区在线 | 久草免费福利 | 日韩视频一区在线观看 | 精品麻豆剧传媒av国产九九九 | 午夜免费在线观看 | 欧美男人天堂 | 亚洲一级av毛片 | 91久久精品国产91久久性色tv | 成人h动漫亚洲一区二区 | 成人免费黄色片 | 99久久久久久 | 亚洲国产精品一区二区第一页 | 伊人伊人 | 国产精品综合久久 | 色资源在线观看 | 中文字幕视频免费 | 欧美精品一区二区三区蜜臀 | 自拍偷拍亚洲视频 | av乱码| 亚洲精品自在在线观看 | 99久久精品一区二区成人 | 夜夜艹| 久久久99国产精品免费 | 91资源在线观看 | 亚州精品天堂中文字幕 | 中文字幕精品一区 |