Infobright

  • MySQLのエンジン形式のDWH検索エンジン
  • カラム型DB
  • レコード数が多ければ多いほど、通常のMySQLとの差が広がる
    • 1000万レコードだと5倍以上違うらしい

CSVファイルのimport

  • DB、テーブル、CSVファイルを指定してデータロード
    #!/bin/sh
    
    INFOBRIGHT_ROOT=/usr/local/infobright
    MYSQL_USER=*****
    MYSQL_PASSWORD=*****
    CUR_DIR=`pwd`
    
    DQ='"'
    QT="'"
    
    DATABASE=$1
    TGT_TABLE=$2
    CSV_FILE=$3
    
    # データフォマットを可変長のテキストに設定して、CSV形式でInfobrightローダーを使用
    WKSTR="set @bh_dataformat='txt_variable';\n"
    # ロード前に現在のデータを削除
    WKSTR="${WKSTR}TRUNCATE TABLE ${TGT_TABLE};\n"
    # データロード
    WKSTR="${WKSTR}LOAD DATA INFILE ${QT}${CUR_DIR}/${CSV_FILE}${QT} INTO TABLE ${TGT_TABLE} FIELDS TERMINATED BY ${QT},${QT} ENCLOSED BY ${QT}${DQ}${QT};"
    
    echo ${WKSTR}
    
    echo ${WKSTR} > ${CUR_DIR}/LOAD_TABLE_${TGT_TABLE}.sql
    
    $INFOBRIGHT_ROOT/bin/mysql $DATABASE < ${CUR_DIR}/LOAD_TABLE_${TGT_TABLE}.sql -u $MYSQL_USER -p$MYSQL_PASSWORD

InfiniDB

  • Calpont社 開発
  • 2010年11月現在、最新バージョンは2.0
  • Enterprise版の価格 ... Single Node : $27,995 each、Multi Node : $19,995 per node
  • InfiniDBは「MySQL 5.1.39」をベースとしたエンジンで、データウェアハウス、データマート、ビジネスインテリジェンスなどの分析アプリケーションに最適としている。
  • カラム主導のアーキテクチャを採用、マルチスレッド設計により、マルチコアCPUを効果的に活用できる。垂直と水平の両パーティショニングをサポートした「Extent Map」により、カラムとローの両方でI/Oを削減できるという。
  • このほか、可用性技術のMVCC(多版型同時実行制御)、DMLサポート、高速データローダー、ACID標準トランザクションなどの特徴を持つ。性能診断、クラッシュ復旧などの機能もある。
  • Enterprise版(30日間仕様可能)では、Community Editionをベースに、MMP(超並列処理)機能などが加わっている。
  • InfiniDB Community Editionは、Calpontのオープンソースプロジェクトよりダウンロードできる。

設定

  • ユーザ mysql, グループ mysql がない場合は作成しておく(でないと後々面倒くさい)
  • バイナリファイルを /usr/local に展開(/usr/local/Calpont ができる)
  • /usr/local/Calpont/mysql/my.cnf を編集
    • 変更:[client] port ... 3306以外に(既にMySQLが動いている場合)
    • 変更:[mysqld] port ... 3306以外に(既にMySQLが動いている場合)
  • 追記:[client]
    default-character-set=utf8
  • 追記:[mysqld]
    default-character-set=utf8
    default-collation=value
    character-set-server=utf8
    collation-server=value
    init-connect=’SET NAMES utf8’
    sql_mode = 'IGNORE_SPACE'
    skip-character-set-client-handshake
  • 追記:[mysql]
    default-character-set=utf8
  • 以下のコマンドを実行
    # /usr/local/Calpont/bin/install-infinidb.sh
    # . /usr/local/Calpont/bin/calpontAlias
    # service infinidb start
  • 使えるようになったか確認
    # idbmysql
    mysql > show engines;
            :
    | InfiniDB   | YES     | Calpont InfiniDB storage engine ...
            :

使い方

  • 起動と終了
    # service infinidb start
    # service infinidb stop
  • Aliasの設定(InfiniDB を使う際に1回実行)
    $ . /usr/local/Calpont/bin/calpontAlias
  • クライアントプログラム
    $ idbmysql

CSVファイルのimport

  • Infobright に比べると面倒くさい
  • 注意点
    • 文字と文字をくくる、ダブルクォーテーションに対応していない。付いている場合、エラーにはならないが値が全て0とかになる。
    • だからInfiniDBの場合はCSVファイルでなく、タブ区切りファイルを使うべき
  • 定義ファイルの作成
    # /usr/local/Calpont/bin/colxml -h
    Running colxml with the following parameters:
    Usage: colxml [options] schema
    Options:
      -d delimiter
      -e max error rows (numeric)
      -h Print this message
      -j Job id (numeric)
      -l load file name
      -n "name in quotes"
      -p path for XML job description file that is generated
      -s "description in quotes"
      -t table name
      -u user
      -r Number of read buffers (numeric)
      -c Read buffer size (numeric)
      -w Write buffer size (numeric))
      -x Extention of file name
      -b debug level (1-3)
    
      schema  - Required field, all others are optional!
    Example:
           colxml -t lineitem -j 123 schema
  • 作成した定義ファイルに基づくimport
    # /usr/local/Calpont/bin/cpimport -h
    Usage: cpimport -j jobID [-h][-r readers][-w parsers][-s c][-f path][-d debugLevel][-i]
    Options:
      -d Print different level (1-3) debug message
      -i Print extended info to console, else extended info only goes to log file
      -h Print this message
      -j Job id (Required)
      -n NullOption (0-treat the string NULL as data (default); 1-treat the string NULL as a NULL value)
      -p path for XML job description file
      -r number of readers
      -w number of parsers
      -s 'c' is the delimiter between values
      -f data file(s) directory path; specify 'STDIN' to redirect input from stdin (STDIN must be all caps)
    -j option is required!

アンインストール

# service infinidb stop
# chkconfig --del infinidb
# rm -rf /usr/local/Calpont

Tips

VP for MySQL

SPIDER

HandlerSocket

  • モバゲータウンにて実際に運用中
  • 非SQLでインターフェイスを提供し、リクエストを集約して実行することや、独自プロトコルで通信量を減らすなどの処理で、単純な参照クエリで数倍〜10倍程度速くなったそうな
  • 標準でC++とPerlのクライアントライブラリを提供
  • 有志によって、Ruby や Python,PHP,Java などのバインディングあるいはネイティブ実装のクライアントが公開されている。

Falcon

Maria

groonga


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-09 (日) 20:46:59 (2571d)