DolphinDBは、MySQLデータをインポートするための2つの方法を提供します。ODBCプラグインとMySQLプラグインです。MySQLプラグインを使用してMySQLデータをインポートすることをお勧めします。これは、ODBCインポートよりも高速で6.5Gデータをインポートし、MySQLプラグインはODBCプラグインよりも4倍高速であり、を使用するための構成は必要ありません。 MySQLプラグイン。ODBCプラグインはデータソースを構成する必要があります。
MySQLプラグインを使用する前に、DolphinDBインストールガイドを参照してDolphinDBをインストールしてください。
1.プラグインをダウンロードします
DolphinDBインストールディレクトリ/ server / plugins / mysqlにはすでにMySQLプラグインが含まれており、ユーザーはプラグインを直接使用できます。ユーザーが自分でコンパイルする必要がある場合は、https://github.com/dolphindb/DolphinDBPlugin/blob/master/mysql/README_CN.mdを参照できます。
2.プラグインをロードします
GUIで、loadPlugin関数を使用してMySQLプラグインをロードします。
loadPlugin(server_dir+"/plugins/mysql/PluginMySQL.txt")
3.インターフェース機能
DolphinDBのMySQLプラグインは、次のインターフェイス機能を提供します。
- 接続する
- showTables
- extractSchema
- 負荷
- loadEx
プラグインインターフェイス関数は、次の2つの方法で呼び出すことができます。
(1)moduleName :: apiFunction。たとえば、MySQLプラグインのconnectメソッドを呼び出します。
mysql::connect(host, port, user, password, db)
(2)moduleNameを使用して、インターフェイス関数を直接呼び出します。useステートメントが1回実行される限り、インターフェース関数への後続の呼び出しでuse関数を再実行する必要はありません。したがって、通常はこの呼び出しメソッドをお勧めします。
use mysql
connect(host, port, user, password, db)
3.1接続
文法
connect(ホスト、ポート、ユーザー、パスワード、db)
パラメータ
hostは、MySQLサーバーのホスト名です。
portはMySQLサーバーのポート番号であり、デフォルトは3306です。
userは、MySQLサーバーのユーザー名です。
passwordは、ユーザーに対応するパスワードです。
dbはMySQLのデータベース名です。
詳細
MySQL接続を作成し、MySQL接続ハンドルを返します。MySQLユーザーの認証タイプはmysql_native_passwordにすることをお勧めします。
例
ローカルMySQLサーバーのemployeesデータベースに接続します。
conn=connect("127.0.0.1",3306,"root","123456","employees")
3.2 showTables
文法
showTables(接続)
パラメータ
connectionは、connect関数によって返される接続ハンドルです。
詳細
MySQLデータベース内のすべてのテーブルの名前を含むDolphinDBタイプのデータテーブルを返します。
例
従業員データベースのテーブルを表示します。
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データテーブルのフィールド名、2番目の列はデータがDolphinDBにインポートされた後のデータ型、3番目の列はMySQLのデータ型です。
例
従業員テーブルの各列のデータ型を表示します。
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(connection、table | query、[schema]、[startRow]、[rowNum])
パラメータ
connectionは、connect関数によって返される接続ハンドルです。
tableは、MySQLサーバー内のテーブルの名前です。
queryは、MySQLのクエリステートメントです。
スキーマはDolphinDBタイプのテーブルであり、2つの列が含まれています。最初の列はフィールド名で、2番目の列はデータ型です。これはオプションのパラメーターです。ユーザーは、このパラメーターを指定することにより、DolphinDBにデータをロードするときにデータ型を変更できます。
startRowは正の整数であり、読み取るデータの開始行番号を示します。これはオプションのパラメーターであり、デフォルト値は0です。これは、最初のレコードからデータの読み取りを開始することを意味します。
rowNumは正の整数であり、読み取られたレコードの行数を示します。これはオプションのパラメーターであり、指定されていない場合は、すべてのデータを読み取ることを意味します。2番目のパラメーターがqueryの場合、startRowパラメーターとrowNumパラメーターは無効です。
詳細
MySQLデータをDolphinDBのメモリテーブルにロードします。
例
- 従業員テーブルのすべてのデータを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
...
2.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
3.ロード時に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のデータベースハンドルであり、通常はデータベース関数によって返されるオブジェクトです。
tableNameは、DolphinDBデータベース内のテーブルの名前です。
partitionColumnsは、パーティション列を表す文字列スカラーまたはベクトルです。
tableは、MySQLサーバー内のテーブルの名前を表す文字列です。
queryは、MySQLのクエリステートメントです。
スキーマはDolphinDBタイプのテーブルであり、2つの列が含まれています。最初の列はフィールド名で、2番目の列はデータ型です。これはオプションのパラメーターです。ユーザーは、このパラメーターを指定することにより、DolphinDBにデータをロードするときにデータ型を変更できます。
startRowは正の整数であり、読み取るデータの開始行番号を示します。これはオプションのパラメーターであり、デフォルト値は0です。これは、最初のレコードからデータの読み取りを開始することを意味します。
rowNumは正の整数であり、読み取られたレコードの行数を示します。これはオプションのパラメーターであり、指定されていない場合は、すべてのデータを読み取ることを意味します。2番目のパラメーターがqueryの場合、startRowパラメーターとrowNumパラメーターは無効です。
詳細
MySQLのデータをDolphinDBのパーティションテーブルにロードします。loadExは、DolphinDBのシーケンシャルパーティションテーブルへのデータのロードをサポートしていません。
例
DolphinDBのディスクVALUEパーティションテーブルにemployeesテーブルをロードします。
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
データをメモリパーティションテーブルにロードする必要がある場合は、データベースパスを空の文字列に変更するだけです。分散テーブルにデータをロードする必要がある場合は、データベースパスを「」で始まるパスに変更するだけです。 dfs:// "、たとえば、" dfs:// mysql "。分散テーブルはクラスターで使用する必要があります。クラスターの展開については、シングルサーバークラスターの展開とマルチサーバークラスターの展開を参照してください。
4.データ型変換
MySQLプラグインを使用してDolphinDBにデータをインポートすると、対応する型変換が行われます。特定の変換ルールを次の表に示します。
説明:
(1)DolphinDBの整数型(SHORT、INT、LONG)はすべて符号付きです。オーバーフローを防ぐために、MySQLの符号なし型はDolphinDBの上位符号型に変換されます。たとえば、unsigned tinyintはshortに変換され、unsignedsmallintは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型の場合、デフォルトでLONG型のDolphinDBに変換されます。オーバーフローが発生した場合、ユーザーはスキーマパラメータを使用し、タイプをDOUBLEまたはFLOATとして指定する必要があります。
(4)MySQLのchar型とvarchar型は、長さが10以下の場合、DolphinDBのSYMBOL型に変換され、長さが10より大きい場合、STRING型に変換されます。 DolphinDB。SYMBOLタイプはDolphinDB内に整数として格納されるため、データの並べ替えと比較の効率が高くなり、ストレージスペースを節約することもできます。ただし、文字列を整数にマップするには時間がかかり、マッピングテーブルもメモリを消費します。ユーザーは、次のルールに従って、列がSYMBOLタイプを使用するかどうかを決定できます。フィールドの値が多数繰り返される場合は、SYMBOLタイプを使用します。たとえば、財務データの銘柄コード、取引所、契約コード、およびIoTデータのデバイス番号はすべて、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データベースのディスク使用量は1.3Gでした。同じPCで、ODBCを使用して一度にデータをインポートすると、MySQLメモリが不足するため、毎回100万個のデータをインポートするのに660秒かかります。同じデータをクリックハウスにインポートするのに171.9秒かかり、読み取り速度は37.8M / sでした。DolphinDBは、時系列データ処理とパーティション管理においてクリックハウスよりも便利です。パフォーマンスを確保し、同時に時系列データと分散データベースのさまざまな処理をサポートしたい場合は、DolphinDBが最適です。