cassandra簡單介紹與基本操作

来源:http://www.cnblogs.com/youzhibing/archive/2017/03/14/6549960.html
-Advertisement-
Play Games

項目中用到了cassandra,用來存儲海量數據,且要有高效的查詢;本博客就進行簡單的介紹和進行一些基本的操作 一、使用場景: 是一款分散式的結構化數據存儲方案(NoSql資料庫),存儲結構比Key-Value資料庫(像Redis)更豐富,但是比Document資料庫(如Mongodb)支持度有限; ...


  項目中用到了cassandra,用來存儲海量數據,且要有高效的查詢;本博客就進行簡單的介紹和進行一些基本的操作

一、使用場景:

  是一款分散式的結構化數據存儲方案(NoSql資料庫),存儲結構比Key-Value資料庫(像Redis)更豐富,但是比Document資料庫(如Mongodb)支持度有限;適合做數據分析或數據倉庫這類需要迅速查找且數據量大的應用

  相關概念:

        keyspace -> table –> column,對應關係型資料庫 database -> table -> column

        存儲結構:

          CREATE TABLE mykeyspace.mytable (

              key1 text,

              key2 text,

              key3 text,

              column1 bigint,

              column2 int,

              column3 timestamp,

              PRIMARY KEY (key1, key2, key3);

    )

    key1: partitionKey,分區主鍵

    key2, key3  clusterKey,集群主鍵

 

二、安裝

         官方文檔:http://cassandra.apache.org/doc/latest/

         1、依賴:jdk、python

           本博客中用到的版本分別為:jdk1.7、python2.7.10,、cassandra2.2.8,註意,我是在win7上做的演示

         2、安裝

           jdk和python的安裝我這裡就不演示,大家自行安裝;

           Cassandra安裝也很簡單,將apache-cassandra-2.2.8-bin.tar.gz進行解壓即可。

三、配置

  官方文檔:http://cassandra.apache.org/doc/latest/getting_started/configuring.html

  Cassandra配置文件都在conf目錄下,其中cassandra.yaml可以完成cassandra的大部分配置,我們主要關註以下兩部分

  1、Main runtime properties(主要的cassandra運行時屬性)

    a) cluster_name:集群名,同一集群的多個節點,集群名要一致

    b) seeds: 種子節點,集群中的全部機器的ip,以逗號隔開

    c) storage_port: Cassandra伺服器與伺服器之間連接的埠號,一般不需要修改,但要保證此埠上沒有防火牆

    d) listen_address: Cassandra集群中伺服器與伺服器之間相互通信的地址。如果留空,將預設使用伺服器的機器名

    e) native_transport_port: 預設的CQL本地服務埠,本地的cql客戶端與伺服器交互的埠

  2、Changing the location of directories(相關的文件目錄)

    a) data_file_directories: 數據文件存放的目錄,一個或多個

    b) commitlog_directory: 提交信息的日誌文件存放的目錄

    c) saved_caches_directory: 緩存存放的目錄

四、運行

         配置完cassandra後,啟動cassandra很簡單,$CASSANDRA_HOME/bin目錄下雙擊cassandra.bat即可,那麼cassandra就啟動起來了,那麼我們怎麼與cassandra進行交互了?啟動cqlsh.bat即可:雙擊$CASSANDRA_HOME/bin目錄下的cqlsh.bat,接下來你就可以隨心所欲的與cassandra交互了

五、cassandra基本操作

      官方文檔:http://cassandra.apache.org/doc/latest/cql/index.html

  1、查詢全部的keyspace:describe keyspaces;(或desc keyspaces;)

  2、創建一個keyspace:CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};

    class : 副本配置策略(總共有三種):

      Simple Strategy(RackUnaware Strategy):副本不考慮機架的因素,按照Token放置在連續下幾個節點。如下圖所示,假如副本數為3,屬於A節點的數據在B.C兩個節點中也放置副本

      OldNetwork Topology Strategy(RackAware Strategy):考慮機架的因素,除了基本的數據外,先找一個處於不同數據中心的點放置一個副本,其餘N-2個副本放置在同一數據中心的不同機架中

      Network Topology Strategy(DatacneterShard Strategy):將M個副本放置到其他的數據中心,將N-M-1的副本放置在同一數據中心的不同機架中

  3、使用某個keyspace:use myCas;

      4、查詢全部的table:desc tables;                                    

  5、創建一張表:CREATE TABLE user (id int, user_name varchar, PRIMARY KEY (id) );

    創建表的時候至少指定一個主鍵

  6、向表中插入一條記錄:INSERT INTO user (id,user_name) VALUES (1,'zhangsan');

     列名必須要顯示指定,如果表中已存在相同主鍵的記錄,那麼該操作會覆蓋表中已存在的記錄

  7、查詢表中全部數據:select * from user;

    cassandra查詢有很多限制,比如只能單表查詢,不支持聯表查詢和子查詢,查詢條件只支持key查詢和索引列查詢,而且key有順序的限制,等等;更多詳情請自行閱讀官方文檔

  8、簡單的條件查詢:select * from user where id=1;

  9、創建索引:create index on user(user_name);

  10、索引列查詢:select * from user where user_name='zhangsan';

    若沒有在name上創建索引,那麼此查詢會報錯;

  11、更新表中數據:update user set user_name='lisi' where id=2;

    只支持按主鍵更新,也就是where後只能跟主鍵

  12、刪除表中記錄:delete from user where id=1;

    刪除某條記錄中的某個欄位,該欄位會被設成null:delete user_name from user where id=1;

    無論是刪除某條記錄,還是將某個欄位置null,都只支持按主鍵刪除,也就是where後只能跟主鍵

  13、批量操作:Multiple INSERT, UPDATE and DELETE can be executed in a single statement by grouping them through a BATCH statement(通過batch能夠執行多個insert、update以及delete),例如:

    BEGIN BATCH

        INSERT INTO user (id, user_name) VALUES (2, 'second user');

                  UPDATE user SET user_name = 'ps22dhds' WHERE id = 2;

                  INSERT INTO user (id, user_name) VALUES (3, 'lee long');

                  DELETE user_name FROM user WHERE id = 3;

    APPLY BATCH;

六、登錄認證

  官方文檔:http://cassandra.apache.org/doc/latest/cql/security.html#

  不知道大家發現沒有,前面的cassandra操作是在沒有登錄的情況下進行的,這在實際生產環境中肯定是不行的,那麼接下來我們看看cassandra的登錄認證

  1、修改配置文件cassandra.yaml

      把預設的authenticator: AllowAllAuthenticator運行所有人登錄設置為用密碼登錄:authenticator: PasswordAuthenticator

  2、登錄cassandra,然後創建新的用戶

    配置文件修改完後,啟動cassandra(如若雙擊cassandra.bat啟動報錯,可以試著在cmd中啟動cassandra);接著啟動客戶端: cqlsh.bat -ucassandra -pcassandra;

    cassandra用戶是預設的,客戶端啟動成功後,創建新的用戶:create user admin with password 'admin' superuser; 新用戶創建成功後,退出客戶端:exit;

    用新用戶登錄:cqlsh.bat -uadmin –padmin; 刪除預設用戶cassandra:drop user cassandra;

    記得把預設用戶刪除掉;另外,可以到system_auth下的roles表中查看已有用戶;

  更多詳情請閱讀官方文檔

七、後話

  1、操作結果我這裡就沒貼上來了,希望大家自己動手去嘗試

  2、有什麼問題,大家可以第一時間看官方文檔,註意官方文檔中有個這個:http://cassandra.apache.org/doc/latest/faq/index.html

  3、cassandra版本要註意,以及它的依賴(jdk、python)的版本,不同的版本支持的內容會有所不同

  4、不知道大家註意到沒有,cql中where後能跟的內容很受限(相比關係型資料庫),後面跟大家詳細探討

  5、下篇博客講java操作cassandra,歡迎大家來捧場

參考

  趙岩的博客

  官方文檔


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本教程為單機版+偽分散式的Hadoop,安裝過程寫的有些簡單,只作為筆記方便自己研究Hadoop用。 環境 Hadoop 有兩個主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比較老的教材上用的可能是 0.20 這樣的版本。Hadoop 2.x 版本在不斷更新,本教程均可適用 ...
  • 1、 " GROUP BY 標準分組 " 1.1、 "GROUP BY 概述" 1.2、 "WHERE 和 HAVING 的區別?" 2、 " GROUP BY 擴展分組 " 2.1、 "ROLLUP 分組" 2.2、 "CUBE 分組" 2.3、 "GROUPING SETS 分組" 2.4、 " ...
  • 通常只有即將執行完畢的語句才會寫入到二進位日誌中。但是一些特殊情況:語句附加的信息或直接代替語句被寫入。 ...
  • SQL觸發器實例(上) ...
  • 1.查看表歷史時刻數據 select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00:00','yyyymmdd hh24:mi:ss'); 2、利用flashback table恢復表到過去某一時刻 alter table ...
  • 最近在做一個RAC升級測試11.2.0.1升級到11.2.0.4,為保證業務能在11.2.0.4版本下正常運行,現需要將資料庫還原至11.2.0.4的單機環境下,資料庫大小為1.04T左右,在這裡總結下步驟。 環境簡介: 1.本次試驗的環境為11.2.0.4的單機環境,存儲為Windows NTFS ...
  • 1.創建DBLINK 2.創建物化視圖日誌(遠程主機操作) 3.創建物化視圖 4.刪除物化視圖和日誌 日誌和物化視圖要分開刪除 5.物化視圖更新 註意: 5.1、如果需要同時刷新多個物化視圖,必須用逗號把各個物化視圖名稱連接起來,並對每個視圖都要指明刷新方式 (f、增量刷新,c、完全刷新,?、強制刷 ...
  • 可以修改類不用重啟Tomcat載入整個項目(手工啟動) 配置reloadable=true(自動重載) 使用Debug模式,前提是僅限於局部修改。(修改類不用重啟--熱載入) Tomcat輕小,而WebLogic、WebSphere對硬體要求比較高,吃記憶體、耗CUP。JBoss類更改不會重啟(傳說, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...