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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...

發布時間:2023/12/10 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DolphinDB提供了兩種導入MySQL數據的方法:ODBC插件和MySQL插件。我們推薦使用MySQL插件導入MySQL數據,因為它的速度比ODBC導入更快,導入6.5G數據,MySQL插件的速度是ODBC插件的4倍,并且使用MySQL插件無需任何配置,而ODBC插件需要配置數據源。

在使用MySQL插件之前,請先參考DolphinDB安裝使用指南安裝DolphinDB。

1.下載插件

2.加載插件

在GUI中,使用loadPlugin函數加載MySQL插件:

loadPlugin(server_dir+"/plugins/mysql/PluginMySQL.txt")

3.接口函數

DolphinDB的MySQL插件提供了以下接口函數:

connect

showTables

extractSchema

load

loadEx

我們可以通過以下兩種方式調用插件的接口函數:

(1)moduleName::apiFunction。例如,調用MySQL插件的connect方法。

mysql::connect(host, port, user, password, db)

(2)use moduleName,然后直接調用接口函數。只要執行一次use語句后,后續調用接口函數都不需要重新執行use函數。因此,我們一般推薦這種調用方法。

use mysql

connect(host, port, user, password, db)

3.1 connect

語法

connect(host, port, user, password, db)

參數

host是MySQL服務器的主機名。

port是MySQL服務器的端口號,默認為3306。

user是MySQL服務器中的用戶名。

password是與user對應的密碼。

db是MySQL中的數據庫名稱。

詳情

創建MySQL連接,返回MySQL的連接句柄。我們建議MySQL用戶的Authentication Type為mysql_native_password。

例子

連接本地MySQL服務器中的employees數據庫。

conn=connect("127.0.0.1",3306,"root","123456","employees")

3.2 showTables

語法

showTables(connection)

參數

connection是connect函數返回的連接句柄。

詳情

返回一個DolphinDB類型的數據表,包含MySQL數據庫中所有表的名稱。

例子

查看employees數據庫中的表。

showTables(conn);

Tables_in_employees

current_dept_emp

departments

dept_emp

dept_emp_latest_date

dept_manager

employees

salaries

test_datatypes

titles

3.2 extractSchema

語法

extractSchema(connection, tableName)

參數

connection是connect函數返回的連接句柄。

tableName是MySQL數據庫中的數據表名稱。

詳情

返回結果是DolphinDB類型的表。第一列是MySQL數據表中的字段名,第二列是數據導入到DolphinDB后的數據類型,第三列是MySQL中的數據類型。

例子

查看employees表中各列的數據類型。

extractSchema(conn,`employees);

name type MySQL describe type emp_no LONG int(11) birth_date DATE date first_name STRING varchar(14) last_name STRING varchar(16) gender SYMBOL enum('M','F') hire_date DATE date

3.3 load

語法

load(connection, table|query, [schema], [startRow], [rowNum])

參數

connection是connect函數返回的連接句柄。

table是MySQL服務器中的表名。

query是MySQL中的查詢語句。

schema是DolphinDB類型的表,它包含兩列,第一列是字段名稱,第二列是數據類型。它是可選參數。用戶可以通過指定該參數來修改數據加載到DolphinDB時的數據類型。

startRow是正整數,表示讀取數據的起始行數。它是可選參數,默認值為0,表示從第一條記錄開始讀取數據。

rowNum是正整數,表示讀取的記錄行數。它是可選參數,如果沒有指定,表示讀取所有的數據。如果第二個參數為query,那么startRow和rowNum參數無效。

詳情

把MySQL數據加載到DolphinDB的內存表中。

例子

把employees表中的所有數據加載到DolphinDB的內存表中。

t=load(conn,"employees");

emp_no birth_date first_name last_name gender hire_date

10,001 1953.09.02 Georgi Facello M 1986.06.26

10,002 1964.06.02 Bezalel Simmel F 1985.11.21

10,003 1959.12.03 Parto Bamford M 1986.08.28

10,004 1954.05.01 Chirstian Koblick M 1986.12.01

10,005 1955.01.21 Kyoichi Maliniak M 1989.09.12

10,006 1953.04.20 Anneke Preusig F 1989.06.02

10,007 1957.05.23 Tzvetan Zielinski F 1989.02.10

10,008 1958.02.19 Saniya Kalloufi M 1994.09.15

10,009 1952.04.19 Sumant Peac F 1985.02.18

10,010 1963.06.01 Duangkaew Piveteau F 1989.08.24

...

把employees表中的前10行數據加載到DolphinDB的內存表中。

t=load(conn,"select * from employees limit 10");

emp_no birth_date first_name last_name gender hire_date

10,001 1953.09.02 Georgi Facello M 1986.06.26

10,002 1964.06.02 Bezalel Simmel F 1985.11.21

10,003 1959.12.03 Parto Bamford M 1986.08.28

10,004 1954.05.01 Chirstian Koblick M 1986.12.01

10,005 1955.01.21 Kyoichi Maliniak M 1989.09.12

10,006 1953.04.20 Anneke Preusig F 1989.06.02

10,007 1957.05.23 Tzvetan Zielinski F 1989.02.10

10,008 1958.02.19 Saniya Kalloufi M 1994.09.15

10,009 1952.04.19 Sumant Peac F 1985.02.18

10,010 1963.06.01 Duangkaew Piveteau F 1989.08.24

加載時把last_name的數據類型修改為SYMBOL。

schema=select name,type from extractSchema(conn,`employees)

update schema set type="SYMBOL" where name="last_name"

t=load(conn,"employees",schema)

//查看表t的結構

schema(t);

chunkPath->

partitionColumnIndex->-1

colDefs->

name typeString typeInt

---------- ---------- -------

emp_no LONG 5

birth_date DATE 6

first_name STRING 18

last_name SYMBOL 18

gender SYMBOL 17

hire_date DATE 6

3.4 loadEx

語法

loadEx(connection, dbHandle, tableName, partitionColumns, table|query, [schema], [startRow], [rowNum])

參數

connection是connect函數返回的連接句柄。

dbHandle是DolphinDB的數據庫句柄,通常是database函數返回的對象。

tableName是DolphinDB數據庫中的表名。

partitionColumns是字符串標量或向量,表示分區列。

table是字符串,表示MySQL服務器中表的名稱。

query是MySQL中的查詢語句。

schema是DolphinDB類型的表,它包含兩列,第一列是字段名稱,第二列是數據類型。它是可選參數。用戶可以通過指定該參數來修改數據加載到DolphinDB時的數據類型。

startRow是正整數,表示讀取數據的起始行數。它是可選參數,默認值為0,表示從第一條記錄開始讀取數據。

rowNum是正整數,表示讀取的記錄行數。它是可選參數,如果沒有指定,表示讀取所有的數據。如果第二個參數為query,那么startRow和rowNum參數無效。

詳情

把MySQL中的數據加載到DolphinDB的分區表中。loadEx不支持把數據加載到DolphinDB的順序分區表中。

例子

把employees表加載到DolphinDB的磁盤VALUE分區表中。

db=database("H:/DolphinDB/Data/mysql",VALUE,`F`M)

pt=loadEx(conn,db,"pt","gender","employees")

select count(*) from loadTable(db,"pt");

count

300,024

如果需要把數據加載到內存分區表,只需要把database的路徑改為空字符串;如果需要把數據加載到分布式表,只需要把database路徑修改為以“dfs://”開頭的路徑,比如“dfs://mysql”。分布式表需要在集群中才能使用。集群部署請參考單服務器集群部署和多服務器集群部署。

4. 數據類型轉換

使用MySQL插件把數據導入到DolphinDB時,會做相應的類型轉換。具體轉換規則如下表所示:

說明:

(1)DolphinDB中的整型(SHORT, INT, LONG)都是有符號的,為了防止溢出,MySQL中的無符號類型在DolphinDB中都會被轉換為高一階的有符號類型。例如,無符號的tinyint轉換為short,無符號的smallint轉換為short等。目前,MySQL插件不支持64位無符號類型轉換。

(2)在DolphinDB中,整型的最小值表示NULL:CHAR類型的-128,SHORT類型的-32,768,INT類型的-2,147,483,648,LONG類型的-9,223,372,036,854,775,808都表示NULL。

(3)對于MySQL中的bigint unsigned類型,默認會轉換成DolphinDB的LONG類型。如果出現溢出的情況,需要用戶使用schema參數,指定類型為DOUBLE或FLOAT。

(4)MySQL中的char和varchar類型,如果長度小于等于10,會被轉換成DolphinDB的SYMBOL類型,如果長度大于10,會被轉換成DolphinDB的STRING類型。SYMBOL類型在DolphinDB內部存儲為整數,因此數據排序和比較的效率會更高,同時也可以節省存儲空間。但是將字符串映射到整數需要時間,映射表也會占用內存。用戶可以根據下面的規則來決定某列是否采用SYMBOL類型:如果該字段的值會大量重復出現,使用SYMBOL類型。如金融數據中的股票代碼、交易所、合約代碼等,物聯網數據中的設備編號等都是使用SYMBOL類型的典型場景。

5. 性能測試

我們在普通PC上(16G內存,4核8線程,使用SSD)進行了性能測試。使用的數據集為美國股票市場1990年到2016年的每日報價數據,數據量為6.5G,包含22個字段,50,591,907行記錄,在MySQL數據庫中磁盤占用為7.2G。使用loadEx函數把數據從MySQL導入到DolphinDB的分區數據庫耗時僅160.5秒,讀取速度達到了41.4M/s,在 DolphinDB database 中磁盤占用為1.3G。在同樣的PC上,由于使用ODBC一次性導入數據會造成MySQL內存不足,因此每次導入100萬條數據,總耗時660秒。將同樣的數據導入clickhouse耗時171.9秒,讀取速度為37.8M/s。DolphinDB在時間序列數據的處理和分區管理上比clickhouse更加方便。

如果既要保證性能,同時友好支持時序數據的各種處理和分布式數據庫,那么DolphinDB database將是不二選擇。

文章來源: segmentfault.com,作者:DolphinDB,版權歸原作者所有,如需轉載,請聯系作者。

原文鏈接:segmentfault.com/a/1190000038793370

總結

以上是生活随笔為你收集整理的mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...的全部內容,希望文章能夠幫你解決所遇到的問題。

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