日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

15分钟了解Apache Phoenix(HBase的开源SQL引擎)

發布時間:2024/2/28 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 15分钟了解Apache Phoenix(HBase的开源SQL引擎) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻譯自官方文檔(http://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html),翻譯的不好,望輕拍磚!

什么是Phoenix?

Phoenix是一個HBase的開源SQL引擎。你可以使用標準的JDBC API代替HBase客戶端API來創建表,插入數據,查詢你的HBase數據。

不要在我的程序和HBase之間增加額外的層,它只會拖慢速度的?

事實上,不會。Phoenix通過以下方式實現了比你自己手寫的方式相同或者可能是更好的性能(更不用說可以少寫了很多代碼):
* 編譯你的SQL查詢為原生HBase的scan語句
* 檢測scan語句最佳的開始和結束的key
* 精心編排你的scan語句讓他們并行執行
* 讓計算去接近數據通過
* 推送你的WHERE子句的謂詞到服務端過濾器處理
* 執行聚合查詢通過服務端鉤子(稱為協同處理器)

除此之外,我們還做了一些有趣的增強功能來更多地優化性能:
* 實現了二級索引來提升非主鍵字段查詢的性能
* 統計相關數據來提高并行化水平,并幫助選擇最佳優化方案
* 跳過掃描過濾器來優化IN,LIKE,OR查詢
* 優化主鍵的鹽值來均勻分布寫壓力

好吧,它很快。但是為什么要用SQL?這已經是70年代的東西了。

一種觀點是:給大伙兒一些他們已經熟悉的東西吧。什么是更好的方式去激勵他們使用HBase呢?最好的方式就是使用JDBC和SQL,原因有以下幾點:
* 降低用戶需要寫的代碼的數量
* 讓性能優化對用戶透明
* 方便利用和整合大量的已經存在的工具

但是怎樣才能讓SQL支持我最喜愛的HBase的某些技術

不要把這(使用Phoenix后)當作是你見HBase的最后一次好吧?SQL只是一種表達你想實現的功能的方式,你不必去思考怎樣用SQL去實現功能(原文是SQL is just a way of expressing what you want to get not how you want to get it)。針對目前已經存在或者正在做的Phoenix功能,看看能否支持你喜歡的HBase的特殊用法。你有自己的想法?我們很樂意聽到你的想法:把問題寫下來給我們同時也可以加入我們的郵件列表。

說了這么多,我只是想知道如何開始?

非常棒!只要跟隨我們的安裝指南:
* 下載并解壓我們的安裝包
* 拷貝能夠與你的Hbase安裝兼容的phoenix的服務端jar包到每個集群節點的lib目錄
* 重啟你的集群節點
* 添加phoenix的客戶端jar包到你的HBase客戶端的classpath下
* 下載并設置SQuirrel作為你的SQL客戶端,這樣你就可以發起即時查詢的SQL語句來操作你的HBase集群

我不想要下載安裝其他東西了!

好吧,有道理 - 你可以創建你自己的SQL腳本并使用我們的命令行工具來執行他們(來代替前面說的下載安裝軟件的方案)。現在讓我們來看一個例子。
定位到你安裝Phoenix路徑的bin目錄來開始。

  • 首先,讓我們來創建一個us_population.sql的文件,包含一個表的定義過程:
CREATE TABLE IF NOT EXISTS us_population (state CHAR(2) NOT NULL,city VARCHAR NOT NULL,population BIGINTCONSTRAINT my_pk PRIMARY KEY (state, city));
  • 現在讓我們創建一個us_population.csv文件,包含一些要放到表里的數據:
NY,New York,8143197 CA,Los Angeles,3844829 IL,Chicago,2842518 TX,Houston,2016582 PA,Philadelphia,1463281 AZ,Phoenix,1461575 TX,San Antonio,1256509 CA,San Diego,1255540 TX,Dallas,1213825 CA,San Jose,912332
  • 最后,讓我們創建一個us_population_queries.sql文件,包含一個我們想在哪些數據上做的查詢。
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum" FROM us_population GROUP BY state ORDER BY sum(population) DESC;
  • 在命令行終端上執行下面的命令
./psql.py <your_zookeeper_quorum> us_population.sql us_population.csv us_population_queries.sql

祝賀!你已經創建了你的第一個Phoenix表了,插入數據進去,并且執行了一個只有幾行數據的聚合查詢代碼,在15分鐘以內!

了不起 - 10行數據!還獲得了什么?

好吧,真是難對付的人。查看一下我們的bin/performance.py腳本,針對你提出的數據庫模式,去創建你想要的行數的數據,然后運行耗時的查詢。

為什么要叫Phoenix(鳳凰)呢?是不是之前有其他什么項目崩潰或者燒毀,然后這個是它的下一代版本?

很抱歉,但是我們沒有時間和空間了,所以我們下次再來回答這個問題。

總結

以上是生活随笔為你收集整理的15分钟了解Apache Phoenix(HBase的开源SQL引擎)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。