前言
随着我國計算機技術的發展,國産伺服器、資料庫産品也逐漸趨于成熟,作為政府行業,采用國内自主研發的伺服器和資料庫意義重大。北京市委已經率先采用國産化系統,相信不久的未來,政府行業将逐漸普及國産化系統和資料庫。
然而,對于熟悉了Linux、MySQL或者Oracle的開發者或者運維來說,可能并不能很快的上手國産環境。而且關于國産系統和資料庫的生态圈還不完善,有一些問題網上也查不到。本片文章就國内比較成熟的作業系統和資料庫展開說明,以快速了解和上手國産化開發,并減少大家後續在國産化開發中的困難。下面會介紹中科方德作業系統和人大金倉資料庫
正文
中科方德作業系統

界面大概如上圖,國産化環境開發的難點,一方面就是在于這個作業系統
整體指令行操作類似CentOS。為了安全起見,該系統做了很多方面的限制:
- 由于禁止接入外網,是以安裝部署隻能通過RPM包或者Docker鏡像的方式進行安裝
- 該系統需要通過CD光牒刻錄的方式,進行上傳RPM或者Docker鏡像,為了資訊安全,也就是隻能往機器上拷貝檔案而不能把檔案拷貝下來
- 不能通過指令後直接安裝RPM軟體,必須要通過類似軟體管理圖形化界面的方式進行安裝,安裝前必須填寫軟體的簽名資訊(比如聯系人電話等資訊、軟體安裝包本身的資訊)
- 不能直接在機器上執行直接拷貝進來的外來可執行檔案。例如通過CD光牒拷貝的shell腳本、以及免安裝的軟體、以及通過編譯安裝的軟體等都沒有權限執行
- 安裝軟體(例如資料庫)等過程會缺少一些依賴庫(C語言、C++的)。這些庫檔案一般也需要自行下載下傳RPM包進行CD光牒刻錄
- Docker必須使用廠商提供的安裝軟體,制作鏡像推薦使用CentOS8,否者啟動容器會沒有權限
中科方德最佳實踐
對于環境的部署,直接通過RPM或者Docker鏡像的方式
對于 MySQL、Redis、Nginx、Zookeeper、ElasticSearch 等軟體、官網有提供對應的RPM包,推薦直接通過軟體管理器RPM的方式進行安裝
找不到RPM包,推薦使用Docker部署
Docker部署注意事項
需要找一台CentOS8系統的伺服器,用來制作鏡像
制作好的鏡像,通過 docker save指令儲存,并通過CD光牒刻錄到中科方德機器,再通過load指令安裝鏡像
以上就是中科方德作業系統需要注意的點,剩下的就是要求使用者熟練掌握Linux
人大金倉資料庫
人大金倉(KingbaseES)是北京人大金倉資訊技術股份有限公司自主研制開發的關系型資料庫。下面重點介紹一下人大金倉的常用的運維和開發技巧
1. 安裝人大金倉
1.1. 人大金倉安裝必須通過普通使用者安裝,這裡建立了一個kingbase使用者
useradd kingbase
passwd kingbase
1.2. 使用kingbase使用者上傳安裝包,并進行解壓
tar -zxvf KingbaseES_V008R003C002B0140_Lin64_install.tar.gz
1.3 執行setup.sh進行安裝
1.4 選擇安裝集
預設是完全安裝,即server和client全部安裝
1.5 選擇授權檔案
安裝過程必須指定廠商提供的授權檔案,當然也可以自行到官網下載下傳一個月試用版
1.6 選擇安裝檔案夾
這裡注意推薦使用預設檔案夾,因為後面廠商提供的壓測工具預設指定的是預設檔案夾
1.7 大小寫敏感
一般選擇大小寫不敏感,因為我們已有系統采用的資料大多是大小寫不敏感的,根據自己目前的資料庫進行選擇
安裝後的目錄如下
進入Server檔案夾,執行root.sh腳本即可啟動資料庫
2. 人大金倉操作
2.1. 啟動與停止
systemctl start kingbase8d
systemctl stop kingbase8d
2.2. 登入
進入Server/bin目錄下
執行如下指令登入
- 其中SYSTEM為使用者名
- 密碼為123456
- TEST為資料庫名
./ksql -USYSTEM -W123456 -p54321 TEST
TEST為預設資料庫,用于管理其他資料庫
例如想檢視目前機器kingbase總連接配接數,可以用以上指令進入TEST,執行
select connections(); //檢視連接配接數
select * from SYS_STAT_ACTIVITY; //檢視連接配接用戶端
3. 開發方式
3.1 可以在安裝目錄下的Jdbc檔案夾找到驅動jar包
3.2 然後在工程中內建jar包,測試連接配接
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Connection con;
Class.forName("com.kingbase8.Driver");
String url="jdbc:kingbase8://127.0.0.1:54321/MYDB";
con=DriverManager.getConnection("jdbc:kingbase8://127.0.0.1:54321/TEST","SYSTEM","123456");
System.out.println(con.getClientInfo());
DatabaseMetaData metaData = con.getMetaData();
String driverVersion = metaData.getDriverVersion();
System.out.println(driverVersion);
}
}
3.3 圖形化用戶端使用
windows推薦使用官方工具,可以直接到官網下載下傳安裝,直接可以使用。操作跟Navicat差不多,官方工具支援很多功能如下:
- SQL語句到導入導出
- 資料遷移,将MySQL資料庫遷移到人大金倉(需要使用人大金倉資料轉換工具,同時連接配接MySQL,進行資料遷移操作)
- 建表操作,推薦使用官方圖形化工具
mac推薦使用DataGrip,需要手動內建驅動
3.4 SQL适配
已有MySQL系統,遷移到人大金倉SQL語句需要一些改造
- 主要是函數适配
- 剔除不支援的特殊符号
- group by字段要跟查找字段保持一緻
4. 人大金倉性能壓測
4.1 定制化的sysbench使用
為了檢測資料庫性能,我們在中科方德機器上部署人大金倉和MySQL,并使用Sysbench進行資料庫對比基準測試。
該sysbench由廠商定制,使用方式如下
//配置sysbench路徑
export PATH=`pwd`:$PATH
//配置資料庫lib路徑
export LD_LIBRARY_PATH=/home/v8.3-build/kliao/v8.2_with_history/postgres/release/lib
//生成資料
sysbench oltp_common --kes-host=192.168.4.80 --kes-port=5433 --kes-connect_timeout=10 --kes-user=SYSTEM --kes-password=123 --kes-db=TEST --table-size=1000 prepare
//執行read_only
sysbench oltp_read_only --kes-host=192.168.4.80 --kes-port=5433 --kes-connect_timeout=10 --kes-user=SYSTEM --kes-password=123 --kes-db=TEST --table-size=1000 --time=10 --threads=8 run
//執行oltp_write_only
sysbench oltp_write_only --kes-host=192.168.4.80 --kes-port=5433 --kes-connect_timeout=10 --kes-user=SYSTEM --kes-password=123 --kes-db=TEST --table-size=1000 --time=10 --threads=8 run
4.2 壓測名額與結果分析
我們在16核心 64G的中科方德機器上進行壓測。使用sysbench分别生成5000w資料,分别對這兩個庫表進行隻讀壓測。線程數設定為10、50、60、70、80、90、100、150、200、300、500、600、700、800等,每個并發壓測三次,每次并發測試的時長為180S,同一并發壓測結果取平均值進行分析
可以看到如下結果
- 線程數在100以内,兩者各項名額相當
- 線程數大于100,且繼續增加線程的過程中,相比MySQL,人大金倉TPS、QPS均有明顯下降