[セコイア]データベースSequoiaDBセコイアテック|セコイア高性能データ移行の練習にデータベースのデータ

SequoiaDB自習クラスの金融商品は、SQLアクセスなどSparkSQLのMySQL、PGSQLと互換性のある複雑なクエリのインデックスを、サポートするためのデータベースがサポート標準SQLと分散トランザクション機能を配布しました。分散メモリ機能に、大規模なデータのより一般的な製品であって、複数のデータ・セグメント・ルールを提供SequoiaDB:水平分割、分割範囲、切断及びデュオWeiqieマスターテーブルの分割方法は、ユーザに応じてシーンを選択することができませんセグメンテーション、方法に対応する記憶容量を増加させるために、システムのパフォーマンスを操作します。

より容易に当接しデータ層における従来のデータベースと、レッドウッド・データ・インポート・データベースは、様々な方法をサポートしながら、簡単で便利なデータマイグレーションのインポート機能を提供するために、ユーザは、最も適切な方法を選択するニーズに応じてデータをロードすることができます。

本稿では、集中データベースレッドウッドレッドウッドSdbimprtインポートツールマトリックスツールおよび使用SparkSQL、MySQLのネイティブAPIインターフェースとデータのインポート、4通りの合計を含む、高性能データを導入する一般的な方法を記載しています。

 

Sdbimprtツールの輸入

sdbimprtはSequoiaDBデータインポートツールはCSV形式SequoiaDBデータベースに導入されるか、またはJSON形式のデータとすることができる重要な要素レッドウッド・データベース・ツール行列、です。

ます。http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1479195620-edition_id-0説明およびツールに導入されたパラメータは、を参照してください。

まず、例えば、

、次のように読み込み、1人のデータのファイル名は「user.csv」で次のアウトラインは、どのようにUSER_INFOに収集空間SequoiaDBコレクションサイトにcsvファイルをインポートするsdbimprtツールを使用するには:

“Jack”,18,”China”“Mike”,20,”USA”

2.インポートコマンド

sdbimprt --hosts=localhost:11810 --type=csv --file=user.csv -c site -l user_info --fields='name string default "Anonymous", age int, country'
  • --hosts:指定したホストアドレス(ホスト名:SVCNAME)

  • --typeインポートデータ形式、またはCSV JSONであってもよいです。

  • --file:インポートするデータファイル名

  • -c( - csname) コレクション・スペースの名前

  • -l( - clname) コレクションの名前

  • --fields:指定インポートしたデータフィールドの名前、タイプ、デフォルト値

 

第二に、パフォーマンスの最適化が導入された
インポート・ツールsdbimprt使用する場合は、次のパフォーマンスを改善する方法について説明:--hostsインポートデータ、可能な指定されたアドレスCOORDの複数のノードを複数のノードを指定して使用して、1を用いて、「」複数のアドレス、ツールsdbimprtによって分離(図1参照)ランダムデータがロードバランシングのために別のマシンに送信されますCOORD。

 

 

 2. --insertnum(-n)パラメーターとき使用してインポートデータ--insertnum(-n)パラメーターバッチに導入することができ、データ伝送時のネットワークの相互作用の数がこのようにデータの導入の速度を高速化、低減されます。1〜100,000の範囲で、デフォルト値は100です。3. --jobs(-j)パラメータ指定を達成するために導入された(接続ごとにスレッド)接続の数は、導入マルチスレッド。4.分割ファイルsdbimprt支持インポートデータのスレッドの数を読み出すようにインポートデータは、マルチスレッド、シングルスレッドが、データの読み出しが読み出されインポートパフォーマンスのボトルネックとなります。この場合、いくつかの小さなファイルに大規模なデータファイルでは、少し複雑なプロセスsdbimprtを開始するには、対応する各ファイルには、導入された性能を強化するように、導入しました。複数のコーディネータノードがクラスタ内に存在する場合、異なるマシンに分散、各プロセスは、複数のマシン上でsdbimprtを開始することができ、各接続機器は、データ伝送をするとき、ネットワークノードに送信するコーディネータに回避されるように、ローカルコーディネータノードをsdbimprt (図2)。

 

 

 データがロードされ、その後、大量のデータをインポートするためにインデックスを付け、およびデータのインポートが完了すると、インデックス、データのインポートまで、この意志のヘルプスピードを再構築するまで、テーブルのインデックス番号は、最初のインデックスを削除することが推奨されています。ターゲットテーブルにインデックスが多数存在する場合、インポートされたデータの処理では、データベースへの書き込みデータに加えて、インデックスファイルは、また、インポートされたデータの性能を低減する、書き込む必要があります。この方法では、導入のデータ転送速度を高めるために他の方法でも適用可能です。

SparkSQLインポート

SparkSQL 可以方便的读取多种数据源,通过 SequoiaDB 提供的 Spark 连接器,可以使用 SparkSQL 向 SequoiaDB 中写入数据或从中读取数据

关于 SparkSQL 如何与 SequoiaDB 连接,请参考:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190712-edition_id-0。

一、示例

下面举例说明如何将 HDFS 中的 csv 文件通过 SparkSQL 导入 SequoiaDB 集合中,以及如何优化导入性能。 1、将 HDFS 中 csv 文件映射成 spark 的临时表

CREATE TABLE   hdfstable           USING  org.apache.spark.sql.execution.datasources.csv.CSVFileFormatOPTIONS (  path "hdfs://usr/local/data/test.csv",   header "true")

2. 将 SDB 的集合映射成 spark 的临时表

create temporary table sdbtable (a string,b int,c date) using com.sequoiadb.spark OPTIONS ( host 'sdbserver1:11810,sdbserver2:11810,sdbserver3:11810', username 'sdbadmin',password 'sdbadmin',collectionspace 'sample', collection 'employee',bulksize '500');

3. 导入

sparkSession.sql("insert into sdbtable select * from hdfstable");

 

二、导入性能优化
SparkSQL 数据写入有以下两个参数可以优化:

  • host

尽量指定多个 coord 节点的地址,用“,”分隔多个地址,数据会随机发到不同 coord 节点上,起到负载均衡的作用。

  • bulksize

该参数默认值为500,代表连接器向 SequoiaDB 写入数据时,以 500 条记录组成一个网络包,再向 SequoiaDB 发送写入请求,可以根据数据的实际大小调整 bulksize 的值。

MySQL 导入

SequoiaDB 以存储引擎的方式与 MySQL 对接,使得用户可以通过 MySQL 的 SQL 接口访问 SequoiaDB 中的数据,并进行增、删、改、查等操作。

关于如何与MySQL对接,请参考:

http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1521595283-edition_id-302。

 

一、示例

使用 mysql 向 SequoiaDB 导入数据有以下几种方式:1. SQL 文件导入

mysql> source /opt/table1.sql

2. CSV 文件导入。mysql 中提供了 load data infile 语句来插入数据:

mysql> load data local infile '/opt/table2.csv' into table table2 fields terminated by ',' enclosed by '"' lines terminated by '\n';

 

二、导入性能优化

提升MySQL的导入性能有如下建议:1. sequoiadb_conn_addr 指定多个地址引擎配置参数“sequoiadb_conn_addr”尽量指定多个coord节点的地址,用“,”分隔多个地址,数据会随机发到不同coord节点上,起到负载均衡的作用。
2. 开启 bulkinsert引擎配置参数“sequoiadb_use_bulk_insert”指定是否启用批量插入,默认值为“ON”,表示启用。配置参数“sequoiadb_bulk_insert_size”指定批量插入时每批的插入记录数,默认值2000。可以通过调整bulkinsert size提高插入性能。
3. 切分文件可以将一个大的数据文件切分为若干个小文件,然后为每个小文件启动一个导入进程,多个文件并发导入,提高导入速度。

API 接口导入

SequoiaDB 提供了插入数据的 API 接口,即“insert”接口。insert 接口会根据传入的参数不同而使用不同的插入方式,如果每次只传入一条记录,则接口也是将记录逐条的发送到数据库引擎,如果每次传入一个包含多条记录的集合或数组,则接口会一次性把这批记录发送到数据库引擎,最后通过引擎一条一条写入数据库中。
因此,insert 接口的两种插入方式的区别在于发送数据到数据库引擎这一过程,一次传入多条记录这种方式称为“bulkinsert”,相对来说会减少数据发送时的网络交互的次数,插入性能更佳。
小结如何达到最大数据加载速度,是数据库迁移/数据导入中常遇到的问题,本文从以下四个方面分别介绍了 SequoiaDB 数据迁移/导入过程中性能最优化的方法:1)基于巨杉工具矩阵 sdbimprt 导入可以采用修改参数 host 指定多个节点、修改连接数、切分文件、修改参数 insertnum、重建索引等等对数据导入速度进行优化。2)基于 MySQL 导入可以采用修改参数 host 地址及 bulksize 进行优化。3)基于 Spark 导入可以采用指定多个协调节点IP、设置 bulkinsert 参数、切分文件进行优化。      4)基于API接口进行优化可以采用 bulkinsert 批量插入数据,减少网络交互。
大家可以参考本文的数据导入方法进行实践验证,从传统数据库迁移到巨杉数据库SequoiaDB。

おすすめ

転載: www.cnblogs.com/sequoiadbsql/p/11942498.html