sql >> データベース >  >> RDS >> MariaDB

MariaDB ColumnStoreとは何ですか?

    一般に、データベースはデータを行形式で保存し、SQLをクエリ言語として使用してアクセスしますが、この保存方法はパフォーマンスの点で常に最適であるとは限らず、ワークロード自体に依存します。統計データを取得したい場合は、おそらく別の種類のデータベースストレージエンジンを使用する必要があります。

    このブログでは、Columnar Storageとは何か、より具体的には、MariaDB ColumnStoreとは何か、ビッグデータをよりパフォーマンスの高い方法で処理できるようにインストールする方法について説明します。分析目的。

    列型ストレージ

    列指向ストレージは、列指向モデルを使用してデータを格納するデータベースエンジンの一種です。

    たとえば、一般的なリレーショナルデータベースでは、次のようなテーブルを作成できます。

    id

    年齢

    1001

    オリバー

    スミス

    23

    1002

    ハリー

    ジョーンズ

    65

    1003

    ジョージ

    ウィリアムズ

    30

    1004

    ジャック

    テイラー

    41

    これは、たとえば、すべてまたはほとんどすべての行情報が必要になる特定の人の年齢を取得する場合は問題ありませんが、特定の列(平均年齢など)の統計を取得する必要がある場合は、次のようになります。最良の構造ではありません。ここで、ColumnarStorageエンジンが機能します。データを行に格納する代わりに、データは列に格納されます。したがって、平均年齢を知る必要がある場合は、次のような構造になるため、これを使用することをお勧めします。

    id

    id

    id

    年齢

    1001

    オリバー

    1001

    スミス

    1001

    23

    1002

    ハリー

    1002

    ジョーンズ

    1002

    65

    1003

    ジョージ

    1003

    ウィリアムズ

    1003

    30

    1004

    ジャック

    1004

    テイラー

    1004

    41

    つまり、すべてのデータではなく、idとageを読み取るだけで平均年齢を知ることができます。一方、単一の挿入を行うコストは、行指向のデータベースよりも高くなります。また、「SELECT *」クエリやトランザクション操作には最適なオプションではないため、OLTP(オンライントランザクション処理)データベースよりもOLAP(オンライン分析処理)データベースに適していると言えます。

    MariaDB ColumnStore

    これは、超並列分散データアーキテクチャを使用する柱状ストレージエンジンです。これは別のダウンロードですが、このブログの執筆時点でまだ開発中のMariaDB10.5.4からMariaDBサーバーのストレージエンジンとして利用できるようになります。

    ビッグデータ向けに設計されており、列型ストレージの利点を利用して、分析クエリへのリアルタイム応答で優れたパフォーマンスを発揮します。

    MariaDBColumnStoreアーキテクチャ

    これは、モジュールとして動作し、連携して動作する多数(または1つだけ)のMariaDBサーバーで構成されています。これらのモジュールには、ユーザー、パフォーマンス、ストレージが含まれます。

    ユーザーモジュール

    これは、ColumnStoreのフロントエンドとして動作するように構成されたMariaDBサーバーインスタンスです。

    ユーザーモジュールは、エンドユーザークエリの操作を管理および制御します。クライアントがクエリを実行すると、クエリが解析され、1つ以上のパフォーマンスモジュールに配布されてクエリが処理されます。次に、ユーザーモジュールはクエリ結果を収集し、それらを結果セットにアセンブルしてクライアントに返します。

    ユーザーモジュールの主な目的は、同時実行スケーリングを処理することです。データベースファイルに直接触れることはなく、データベースファイルを表示する必要もありません。

    パフォーマンスモジュール

    データの保存、取得、管理、クエリ操作のブロックリクエストの処理、クエリリクエストを完了するためのユーザーモジュールへのデータの返送を担当します。クエリ自体は表示されませんが、ユーザーモジュールから指定された一連の指示のみが表示されます。

    モジュールはディスクからデータを選択し、それが実行されているサーバーの一部であるシェアードナッシングバッファーにデータをキャッシュします。

    複数のパフォーマンスモジュールノードを備えたハートビートメカニズムにより、すべてのノードがオンラインになり、特定のノードに障害が発生した場合に透過的なフェイルオーバーが保証されます。

    ストレージ

    ローカルストレージ(パフォーマンスモジュール)または共有ストレージ(SAN)を使用して、データを保存できます。

    MariaDB ColumnStoreにテーブルを作成すると、システムはテーブルの列ごとに少なくとも1つのファイルを作成します。したがって、たとえば、3つの列で作成されたテーブルには、SANまたはパフォーマンスモジュールのローカルディスク上に作成された、少なくとも3つの個別にアドレス指定可能な論理オブジェクトが含まれます。

    ColumnStoreは、ディスクからの読み取りパフォーマンスのために圧縮戦略を最適化します。解凍速度を加速するように調整されており、ディスクから読み取るときのパフォーマンス上の利点を最大化します。

    MariaDB ColumnStoreは、バージョンバッファーを使用して、変更中のディスクブロックを格納し、トランザクションロールバックを管理し、データベースのMVCC(マルチバージョン同時実行制御)または「スナップショット読み取り」機能を提供します。これにより、データベースのクエリ整合性のあるビューを提供できます。

    MariaDBCloumnStoreの仕組み

    次に、MariaDB ColumnStoreの公式ドキュメントに従って、MariaDBColumnStoreがエンドユーザークエリを処理する方法を見てみましょう。

    • クライアントは、ユーザーモジュールで実行されているMariaDBサーバーにクエリを発行します。サーバーは、要求を満たすために必要なすべてのテーブルに対してテーブル操作を実行し、最初のクエリ実行プランを取得します。
    • MariaDBストレージエンジンインターフェースを使用して、ColumnStoreはサーバーテーブルオブジェクトをColumnStoreオブジェクトに変換します。これらのオブジェクトは、ユーザーモジュールプロセスに送信されます。
    • ユーザーモジュールはMariaDB実行プランを変換し、指定されたオブジェクトをColumnStore実行プランに最適化します。次に、クエリを実行するために必要な手順と、それらを実行する必要がある順序を決定します。
    • 次に、ユーザーモジュールはエクステントマップを参照して、必要なデータについて参照するパフォーマンスモジュールを決定し、エクステントエリミネーションを実行して、範囲外のデータのみを含むパフォーマンスモジュールをリストから削除します。クエリに必要なもの。
    • 次に、ユーザーモジュールは1つ以上のパフォーマンスモジュールにコマンドを送信して、ブロックI/O操作を実行します。
    • 1つまたは複数のパフォーマンスモジュールは、述語フィルタリング、結合処理、ローカルまたは外部ストレージからのデータの初期集約を実行してから、データをユーザーモジュールに送り返します。
    • ユーザーモジュールは、最終的な結果セットの集計を実行し、クエリの結果セットを作成します。
    • ユーザーモジュール/ExeMgrは、ウィンドウ関数の計算と、結果セットに対する必要な並べ替えを実装します。次に、結果セットをサーバーに返します。
    • MariaDBサーバーは、結果セットに対して任意の選択リスト機能、ORDERBYおよびLIMIT操作を実行します。
    • MariaDBサーバーは結果セットをクライアントに返します。

    MariaDBColumnStoreのインストール方法

    では、インストール方法を見てみましょう。詳細については、MariaDBの公式ドキュメントを確認してください。

    オペレーティングシステムとしてCentOS7を使用しますが、代わりにサポートされている任意のOSを使用できます。インストールパッケージは、ここからダウンロードできます。

    まず、追加パッケージリポジトリをインストールする必要があります:

    $ yum install -y epel-release

    次に、次の必須パッケージ:

    $ yum install -y boost expect perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs

    それでは、MariaDB ColumnStoreの最新バージョンをダウンロードし、解凍してインストールしましょう。

    $ wget https://downloads.mariadb.com/ColumnStore/latest/centos/x86_64/7/mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
    
    $ tar zxf mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
    
    $ rpm -ivh mariadb-columnstore-1.2.5-1-*.rpm

    終了すると、次のメッセージが表示されます。

    次のステップは次のとおりです。

    If installing on a pm1 node using non-distributed install
    
    /usr/local/mariadb/columnstore/bin/postConfigure
    
    
    
    If installing on a pm1 node using distributed install
    
    /usr/local/mariadb/columnstore/bin/postConfigure -d
    
    
    
    If installing on a non-pm1 using the non-distributed option:
    
    /usr/local/mariadb/columnstore/bin/columnstore start

    したがって、この例では、次のコマンドを実行してみましょう。

    $ /usr/local/mariadb/columnstore/bin/postConfigure

    これで、インストールに関する情報を尋ねられます:

    This is the MariaDB ColumnStore System Configuration and Installation tool.
    
    It will Configure the MariaDB ColumnStore System and will perform a Package
    
    Installation of all of the Servers within the System that is being configured.
    
    
    
    IMPORTANT: This tool requires to run on the Performance Module #1
    
    
    
    Prompting instructions:
    
    Press 'enter' to accept a value in (), if available or
    
    Enter one of the options within [], if available, or
    
    Enter a new value
    
    
    
    ===== Setup System Server Type Configuration =====
    
    
    
    There are 2 options when configuring the System Server Type: single and multi
    
      'single'  - Single-Server install is used when there will only be 1 server configured
    
                  on the system. It can also be used for production systems, if the plan is
    
                  to stay single-server.
    
      'multi'   - Multi-Server install is used when you want to configure multiple servers now or
    
                  in the future. With Multi-Server install, you can still configure just 1 server
    
                  now and add on addition servers/modules in the future.
    
    
    
    Select the type of System Server install [1=single, 2=multi] (2) > 1
    
    Performing the Single Server Install.
    
    
    
    Enter System Name (columnstore-1) >
    
    
    
    ===== Setup Storage Configuration =====
    
    
    
    ----- Setup Performance Module DBRoot Data Storage Mount Configuration -----
    
    There are 2 options when configuring the storage: internal or external
    
      'internal' -    This is specified when a local disk is used for the DBRoot storage.
    
                      High Availability Server Failover is not Supported in this mode
    
      'external' -    This is specified when the DBRoot directories are mounted.
    
                      High Availability Server Failover is Supported in this mode.
    
    
    
    Select the type of Data Storage [1=internal, 2=external] (1) >
    
    Enter the list (Nx,Ny,Nz) or range (Nx-Nz) of DBRoot IDs assigned to module 'pm1' (1) >
    
    
    
    ===== Performing Configuration Setup and MariaDB ColumnStore Startup =====
    
    
    
    NOTE: Setting 'NumBlocksPct' to 50%
    
          Setting 'TotalUmMemory' to 25% of total memory.
    
    
    
    Running the MariaDB ColumnStore setup scripts
    
    
    
    post-mysqld-install Successfully Completed
    
    post-mysql-install Successfully Completed
    
    Starting MariaDB Columnstore Database Platform
    
    Starting MariaDB ColumnStore Database Platform Starting, please wait ....... DONE
    
    System Catalog Successfull Created
    
    MariaDB ColumnStore Install Successfully Completed, System is Active
    
    Enter the following command to define MariaDB ColumnStore Alias Commands
    
    
    
    . /etc/profile.d/columnstoreAlias.sh
    
    
    
    Enter 'mcsmysql' to access the MariaDB ColumnStore SQL console
    
    Enter 'mcsadmin' to access the MariaDB ColumnStore Admin console
    
    
    
    NOTE: The MariaDB ColumnStore Alias Commands are in /etc/profile.d/columnstoreAlias.sh

    生成されたスクリプトを実行します:

    $ . /etc/profile.d/columnstoreAlias.sh

    これで、「mcsmysql」コマンドを実行してデータベースにアクセスできます。

    $ mcsmysql
    
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    
    Your MariaDB connection id is 12
    
    Server version: 10.3.16-MariaDB-log Columnstore 1.2.5-1
    
    
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    
    
    MariaDB [(none)]>
    以上です。これで、MariaDBColumnStoreデータベースにデータをロードできます。

    結論

    列指向ストレージは、分析目的でデータを処理するための優れたデータベースストレージの代替手段です。 MariaDB ColumnStoreは、このタスク用に設計された列型ストレージエンジンであり、ご覧のとおり、インストールは非常に簡単です。したがって、OLAPデータベースが必要な場合やビッグデータを処理する場合は、試してみてください。


    1. Oracleシーケンスですが、MSSQLServerで

    2. インデックスのDOとDONT

    3. MySQLですべてのストアドプロシージャを一覧表示する2つの方法

    4. SQLServerで主キーを持つすべてのテーブルを返す7つの方法