主要機能

"SQL準拠・商用RDBMSの主要機能をサポート"


  • 大容量メモリデータの保存をサポート(64 ビット空間)

  • 多様なインターフェース : Embedded SQL、JDBC、ODBC、Altibase CLI、XA

  • メモリデータベース上で空間データベースのためのクエリをサポート

  • データベース二重化及び分散機能(レプリケーション)

  • ANSI SQL92 を Full サポート

  • 統合されたクエリープロセッサ

  • テーブルスペースによる保存領域の管理
  • -メモリテーブルスペース
    -ディスクテーブルスペース
    -Volatile テーブルスペース(回復機能を持たないメモリテーブルスペース)

  • オンラインバックアップ、及び完全な回復をサポート

  • savepoint(Implicit / Explicit)をサポート

  • メモリデータベース領域として、ローカルメモリ、共有メモリをサポート(共有メモリ使用の際は、サーバーの再起動を高速化)

  • メモリデータベースの自動拡張

  • Logfile の分離

  • PSM Structured Data Type をサポート

  アーキテクチャ

リレーショナルデータベースモデルで、汎用的な業務で利用可能


ALTIBASE は、リレーショナルデータベースモデルをサポートし、汎用的なアプリケーションシステムと特定のリアルタイムアプリケーションシステムに適した特性を持っています。


図版

クライアント・サーバー型アーキテクチャは、一般的なアプリケーションに適した構造で、アプリケーションプログラムは様々な通信方法によってサーバーに接続します。一方、アプリケーション組み込み型構造は、アプリケーションプログラムをデータベースサーバーに内蔵することによって一つのプロセスで運用する方式です。

このような構造は、アプリケーションプログラムとデータベースサーバー間の通信オーバヘッドを省くことで、高性能のトランザクション処理が可能となります。ユーザは、アプリケーションプログラムの特性や運用環境の特性に適したデータベースサーバーアーキテクチャを選択することができる柔軟性を持つことができます。

一般的に知られているように、マルチプロセスアーキテクチャのシステムは、ユーザが増加することにつれて必要なシステムリソースが急増し、プロセス間のスワップコストが大きくなります。一方、マルチスレッドアーキテクチャのシステムは、スレッド単位で管理されるため、システムリソースの消費を少なくします。

マルチスレッドの長所を生かしたAltibaseサーバーは、サーバー機能をサポートする多数のシステムスレッドとユーザの接続によってサービスを提供するサービススレッドプールで構成されています。サービススレッドプールは、サーバー接続プールと連動し、限定された個数のスレッドを通じて多くのユーザーにサービスを提供します。つまり、このような構造は、サーバーが使うリソースを最小化することにより、システムの拡張性と可用性を最大化することができます。

Altibase サーバーの内部構造


図版

Altibase は、モジュール別の独立性を考慮し、階層型構造で設計することにより、アルゴリズムを単純化しました。各モジュールの単純化で全体的な性能アップを図っています。また、プラットフォーム独立階層(Platform Independent Layer)を開発したことにより、様々なプラットフォームへの移植が非常に簡単です。現在、ほとんどの Unix 系列、Windows、そして QNX のような RTOS に移植されています。 クライアントの効率的な業務処理のため、TCP / IP、UNIX DOMAIN、IPC などの通信方法を提供することにより、ユーザの業務特性に合わせた様々な通信方法が選択できるので、アプリケーションプログラムの開発や運用に柔軟性を提供します。特に、IPC 通信モジュールは、共有メモリによる高速な通信を提供します。

Altibase 構成要素


図版

  メモリ管理

"最適化されたメモリデータベース構造により高性能を実現"


メモリデータベースのキーポイントは、データベース用として必要な大量のメモリをいかに上手く利用するかという点にあります。すなわち、メモリに最適化したデータベース構造の設計技法によって性能に大きく差が現れます。 ハイブリッドメモリデータベースのキーポイントは、メモリデータベースとディスクデータベースにいかに効率的にデータを配置するかという点にあります。つまり、高速アクセスが必要なデータとそれ以外のデータの取り扱いのポリシーを明確に設定することが重要です。

Memory Operation


高性能データベースを効率的に管理するため、ALTIBASE は、各階層に効率的なメモリ使用のために慎重に設計されています。データベースのようなシステムソフトウェアは、単純なメモリの割り当て(malloc)や、値を指定(memset)する演算も性能に非常に大きな影響を与えるため、ALTIBASE は、メモリプールを利用したメモリ管理モジュールを非常に慎重に設計して実現しました。また、ALTIBASE の保存デバイス管理階層(Storage Management Layer)は、メインメモリに最適化された保存単位でページを構成し、各ページの連携性を最大化することにより、データベースを効率的に保存・管理します。クエリ処理階層(Query Processing Layer)は、クエリ処理の際に必要な一時的空間(temporary storage)を効率的に管理するため、実行中に不要なメモリリソースの割り当てや解放による性能低下の要素を最小化しました。


Disk Operation


大容量データベースの効率的な代案として、ALTIBASE は、メモリとディスクの 2 つの保存領域を一つの DBMS で提供します。メモリ領域と同様にディスク基盤の保存領域は、従来の DRDBMS で提供する LRU アルゴリズムをベースとしたバッファプール領域や物理的ディスク保存領域をサポートします。 ユーザが要求するデータをバッファプールにキャッシュして使用し、高性能なメモリ保存領域のデータと保存領域の速度に対する性能低下の要素を最小化しました。


Table Compaction


メモリデータベースを運用すると、実際にテーブルに必要なメモリ空間よりはるかに多い量のメモリが消費されることがあります。これは、主に大量のデータがテーブルに挿入された後や、変更や削除が頻繁に行われた時に発生します。このような場合、該当するテーブルから不要なメモリをシステムに返還することができれば、より効率的にメモリを使うことができます。ALTIBASE は、テーブル単位の compaction 機能を提供しており、この機能を利用すると、メモリやテーブルを効率的に管理することができます。


Disk Operation


ALTIBASE は、メインメモリ上のデータベース空間を共有メモリまたはプロセスローカルメモリに確保できる機能を提供します。共有メモリをデータベース空間として使うと、システムが正常な状態では、ALTIBASE の再実行にかかる時間を非常に短くすることができます。これは、共有メモリ内のデータベースが安全に維持されているため、バックアップデータベースからデータを読み込む必要がなく、すぐに共有メモリ内のデータベース領域を ALTIBASE サーバープロセスに割り当てて使うことができるためです。 メモリ内のデータベース空間は、永続空間(persistent space)と一時的空間(temporary space)に分けられます。永続空間は、実際のテーブルとメタ情報に関するデータを保存しています。この空間は、ディスク上のバックアップデータベース内容を反映しています。一時的空間は、インデックスデータやクエリ演算中に発生する作業用のテーブルが置かれる場所です。
 この空間は、ディスク上にあるバックアップデータベースには反映されず、ALTIBASE サーバーが終了すると消えてしまう空間です。ALTIBASE のインデックスデータはバックアップデータベースに保存されず、一時的空間に保存・管理されます。ALTIBASE は、サーバー開始時にシステムカタログからインデックス情報を取得して、一時的空間にインデックスを速やかに生成します。インデックスをバックアップデータベースに保存しないことにより、ALTIBASE は、サーバー実行中にインデックスの変更に対してロギングする必要がなく、その分データベースの性能をアップさせることができます。
継続したデータの挿入により、メモリ内のデータベースの永続空間が足りない場合、ALTIBASE は、自動でデータベースの永続空間を一定のサイズに拡張して管理します。もちろん拡張されたデータベースの永続空間はバックアップデータベースに反映され、データの永続性を保障します。
ALTIBASE には、メモリデータベースのデータサイズの拡張に対応するため、ディスクテーブルスペース上のテーブルにデータを移動する機能を提供します。この移動機能(MOVE DML)は、同じスキーマのテーブルが存在する場合、メモリてーブルスペースのデータをディスクテーブルスペースに移動し、該当データを元のテーブルから削除する機能です。このデータ移動機能により、アクセスの多いデータやアクセスが比較的少ないデータを分離して保存し、応答性能を最適化し、保存空間をさらに効率的に使うことができます。


  ロギングとリカバリー

トランザクションログでメモリデータベースの永続性を保証


ALTIBASE は、伝統的なトランザクションの概念である ACID 特性を完全にサポートすることを基本とします。
ACID は、一般的なデータベースシステムがトランザクション処理のために基本的に提供する特性として、原子性(atomicity)、一貫性(consistency)、独立性(isolation)、永続性(durability)の 4 つを意味します。ALTIBASE ではこれら 4 つの特性を全て満足するトランザクション処理方法を提供します。これらの特性のうち、永続性を提供するためにはディスクとの同期化機能が必須であり、これはディスクへのアクセスによる性能低下を引き起こします。しかし、ALTIBASE は、独自の技術開発により高速のトランザクション処理を保障しつつ、トランザクションの永続性を提供する特徴を持っています。 実際のサービスが行われる環境では、偶発的なサーバーの障害によりデータベースのシステムダウンが発生する可能性もあり、そのような状態でのデータベースの回復は進行中であるトランザクションの状態を正確に反映、もしくは完全に撤回できる機能が必要です。ALTIBASE は、ロギングの際、WAL(Write Ahead Log)プロトコルを適用して様々な状態のトランザクションを回復時点に正確に反映することにより、トラブル発生前の状態に完全に復旧されることを保障します。

ALTIBASE は、構築されたデータベースをファイルに、暗黙的(implicit)または明示的(explicit)な方式でディスクのバックアップデータベースファイルに同期化(checkpoint)します。この際、同期化の過程では全ての変更されたページがディスクに反映されなければなりませんが、その時に該当ページの一貫性を維持するために Page Latch をかけなければならない場合が発生します。しかし、ハイブリッド メモリデータベースの特性を考慮すると、Page Latch を使うのは、実行中のトランザクションとの衝突を引き起こし、同期化の際にシステム全体の性能を急激に低下させる危険性があります。このような問題を解決するため、ALTIBASE は同期化の際に、Page Latch を使わない代わりにバックアップディスクを二つ置き、交互に反映するようにしたピンポンチェックポイントと呼ぶ技術を実装しています。これにより、同期化の過程で、実行中のトランザクションに負荷を与えずシステム全体の性能アップを図っています。
ALTIBASE システムのページのサイズやファイルシステムの物理的なページサイズが異なった場合、Disk I / O の実行中に異常終了されると、ページが完全ではない状態で残されることがあります。このような現象を防ぐために ALTIBASE は、ページの I / O を行うときに、ディスクの特定の領域に存在するダブルライトバッファ領域に同じイメージを予め保存しておきます。そして、ALTIBASE の再起動時に、ダブルライトバッファの内容と実際のページの内容をチェックし、不完全なページを復旧します。


  トランザクション処理

読み取り一貫性で高い同時実行性とデータの整合性を保証

Concurrency Control


ハイブリッド メモリデータベースでの同時性制御は、従来の RDBMS とは異なる特徴を持っています。ハイブリッド メモリデータベースは、従来の RDBMS より 10 倍以上のパフォーマンスを達成できるため、高速なデータ処理が強く要求される領域で使用されます。そのため、できるだけ同時性制御にかかるコストが少なくし、データベース全体の性能をアップさせなければならないという要件が存在します。
伝統的な 2PL(two phase locking)プロトコルを使うデータベースでは、仮に該当ロックのレベルがレコードだとしても、該当レコードに対する変更処理が発生すると、該当レコードに対する読込み処理が遅延する問題が発生します。また、特定のレコードに対する読込み処理が発生した後は、そのトランザクションが commit されるまで、そのレコードに対する変更トランザクションが待ち状態となる状況も発生します。更に、大量のレコードに対する読込みまたは変更処理が発生した場合は、レコードに対する読込みや書込みコストより同時性制御を行うロックに対する処理演算により多くコストがかかることになり、ロックエスカレーション(Escalation)が発生しトランザクション性能が低下する危険性があります。
ALTIBASE が提供するマルチバージョン技法は、トランザクション実行時間に対し、それぞれ異なったバージョンを維持するため、レコードレベルの読込み処理は、変更処理と関係なく進めることができ、変更処理も読込み処理とは関係なく進めることができます。 特に、ALTIBASE は、レコードレベルのロックメカニズムをサポートしつつ、該当レコードに対するロック情報を直接レコード内部に保存するため、ロック処理にかかるコストがほとんどゼロに近いだけでなく、読込み処理の場合は、ロック情報を持たずに処理を進められるように設計されました。また、一つのトランザクションが大量のレコードに対して読込みや変更処理を実行しても、ロック管理に対するコストがほとんど発生しないため、高速な応答速度を保証します。
ALTIBASE は、メモリテーブルやディスクテーブルに対し、外見上は同じ機能を提供しますが、異なる実装方式で MVCC を実現しています。メモリテーブルは、行を変更する度に新しいバージョンを生成する out-place MVCC で実現されており、ディスクテーブルの場合は、変更されたデータを既存の行に上書きし、変更前の情報を undo table space に保存して参照する in-place MVCC 方式を採用しています。
ハイブリッド メモリデータベースが、メモリ方式の out-place マルチバージョン技法をサポートすることにおいて負担となる部分は、トランザクションがそれ以上アクセスできない前のバージョンのレコードに対する処理です。ハイブリッド メモリデータベースは、システムメモリを持続的に使うため、削除・変更されたレコードを解放しなければ、システムが使用可能なメモリを全部使い切ってしまう可能性があります。
このような理由からハイブリッド メモリデータベースでは、必要のないレコードまたはインデックスノードが存在した場合、すぐ回収して再利用できるメカニズムが必要です。ALTIBASE では、このような役割をするガーベージコレクション(Garbage Collection)スレッドを生成し、最適なメモリ状態が維持できるよう保障します。

Transaction


ALTIBASE は、ハイブリッド メモリデータベースの構造に合わせて最高の性能が出せるトランザクション構造やそれと関連した様々な機能を提供します。
ALTIBASE は、マルチバージョン技法(MVCC : Multiversion Concurrency Control)を利用して同時性制御を行いますが、一般的なトランザクション管理技法では、最適の性能を発揮することがが困難です。MVCC 環境では、特定の時点に特定のレコードに対するアクセスを行った他のトランザクションの状態、つまり現在実行中なのか、あるいは既に終了したものなのかなどの情報を数ナノ秒(nano sec)内に決めなければならない制約が存在しますが、このような判断のためのコストが多くかかる場合、マルチバージョン技法の処理コストが非常に大きくなり、返って逆効果となるためです。
このような要件を満たすために ALTIBASE では、トランザクションプール(Transaction Pool)を維持し、そのプールに対する直接的なアクセスにより高速にトランザクションの実行の有無を判断できるようにしています。特に、トランザクションプールを予め作成しておく構造は、デッドロック(Dead Lock)処理にも大きなメリットを持ちます。一般的なデッドロック検知技法は、トランザクションの間にサイクルが存在するのかどうかを検査する別のプロセスあるいはスレッドが存在し、一定周期で全ての使用中のトランザクションを検査するものです。この構造は、必然的にデッドロックに参加したトランザクションの一時的なサービスの中止をもたらします。高速な応答速度を保障しなければならないハイブリッド メモリデータベースにおいて、デッドロックが発生した後、一定時間の間サービスが中止されるということは極めて致命的な結果をもたらすため、このようなデッドロック検知技法は適切ではありません。この問題を解決するため、ALTIBASE では、トランザクションのロック要求の際に、トランザクションプールを利用して即時に非常にデッドロックを発生させたかどうかを検査するアルゴリズムを適用し、デッドロックによるトランザクションの致命的な遅延現象を根本的に解決しています。
また、ALTIBASE のトランザクションの分離レベル(isolation level)は、commit read を基本として、repeatable read や no phantom read レベルを動的にサポートするため、ユーザの必要に合わせて適切な分離レベルを選択して使うことができます。


  コンカレントユーザサポート

マルチスレッドアーキテクチャで同時に大量の処理を効率よく実行


データベースに対する同時ユーザ数は、データベースの特性や該当システムの容量と密接な関係があります。しかし、システム容量が増える比率だけ実際にデータベースがサポートする同時ユーザ数は比例関係を持たないことが一般的であり、特にデータベースがサポートするサービスアーキテクチャーがこのようなリソースに関する問題と直接的な関連性があります。 伝統的な方法として、サービス当り一つのプロセスを生成する構造を持つアーキテクチャは、ユーザ数分のプロセスが生成されなければならず、それによるリソースの無駄使いが激しい状態では、大容量ユーザをサポートするための解決策を見つけるのが困難です。限定されたプロセスで大量のユーザーをサポートするとしても、リソースをユーザ間で時間差をつけて分けて使うこととなり、完全な解決策であるとはいえません。 このような問題から、現在のデータベースの構造はマルチスレッドアーキテクチャーに移行している傾向であり、ALTIBASE は、設計当初からマルチスレッドを基本に検討されています。 ALTIBASE では、スレッドアーキテクチャーを基本にサービススレッドプールやサービスセッションプールを提供し、2 段階のスレッド構造を提供します。サービスセッションプールは、クライアントの要求を直接担当し、クライアントに情報を返すセッションを維持するものであり、サービススレッドプールは、このようなクライアントのサービスを実際に下位モジュールで実行します。サービスセッションプールやサービススレッドプールの数は、プロパティにより該当システムの負荷に合わせて適切な値を選択することができるため、必要以上のサーバーリソースを消耗することがないよう制御できます。また、クライアントに対する高速な応答を保障するために、一定の数までのクライアントにはサービススレッドとの 1 : 1 接続により最大の性能を保障し、一定の数以上のクライアントが接続される場合は、N : M の接続に自動変換し、サーバーリソースを効率的に利用できるクライアント-サーバー間の混合サービス(Hybrid Architecture)方式を提供します。


  クエリ処理

SQL92準拠のため、既存RDBMSからの移行も容易


特殊なアプリケーションに合わせて開発されたリアルタイムシステムの場合、多くのシステムはクエリ処理言語(SQL)を提供しないか、SQL の一部の機能だけを提供する API によるアプリケーションプログラムの作成を要求します。このような方式は、アプリケーションプログラムの作成を難しくし、開発費用を膨らませ、メンテナンスも困難にします。

ALTIBASE は、Ad-hoc 方式のプログラミングの開発ではなく、標準仕様である SQL-92 をサポートすることにより、簡単にデータを変更してアクセスできる方法を提供します。そのため、開発期間を短縮し、メンテナンス費用も大幅に削減することができます。
また、単純なクエリ処理機能や性能のみに重点を置いている他の製品とは異なり、通信サービスなどのように単純なクエリ性能を要求する特定分野はもちろん、複雑な分析や処理のための様々なパターンのクエリが要求される汎用分野にも適用できるように、高性能、高機能、大容量のクエリ処理を提供します。

ALTIBASE のクエリ処理機能は、最適化されたメモリ管理やディスク管理により、高性能のクエリ処理を提供します。例えば、メモリやディスクの特性に合わせて最適化された cost-based optimizer の提供、最適の join optimizer による Nested Loop Join、ハッシング(Hashing)またはソート(Sorting)を利用した Join の実行方法をサポートします。また、高速なデータ照会のために効率的なインデックス使用アルゴリズムをサポートすることにより、高性能なクエリ処理を提供します。
また、rule-based optimizer では、複雑なアプリケーションプログラムのクエリ性能が保障できない短所を補い、メモリの特性に合わせて最適化された cost-based optimizer をサポートすることにより、単純なクエリの性能はもちろん、複雑なクエリに対しても高性能のクエリの実行を可能にします。

ALTIBASE のクエリ処理機能は、機能的な側面において一般的な Inner Join だけでなく、Outer Join(full、left、right outer join)など、様々なジョイン(Join)機能のサポート、複雑なスキーマのアプリケーションプログラムに適合したサブクエリ(subquery)処理や inline-view 機能、ユーザがデータベーススキーマによってクエリ実行プラン(execution plan)を自由に変更し、照会できる機能、多様なシステム提供関数(built-in function)や条件文のサポート、SET 演算(union、intersect、minus)のサポートなど、一般的なデータベースアプリケーションプログラムで必要とされる多くの機能を提供します。

 また、データがメモリ領域に保存されていても、ディスク領域に保存されていても、Join 文を自由かつ制限なしに使える特徴を持っています。
複雑なアプリケーションプログラムをデータベースに保存・管理することが容易なストアド・プロシージャ(stored procedure)機能、sequence 機能、foreign key 機能などのDDL、DML、DCL、二重化(replication)関連の SQL 文などをサポートすることにより、SQL 文を使ってデータベースを簡単に管理することができます。

ALTIBASE のクエリ処理機能は、アクセスするレコードがメインメモリに存在する特徴を生かし、それに最適化されたアルゴリズムで高機能のクエリを高性能で処理することにより、色々な分野に適用され、アプリケーションプログラムの開発を容易に行うことができます。


  プログラムインターフェース

既存資産を有効活用できるデータべースの標準インタフェース


ALTIBASE は、従来の RDBMS がサポートする標準プログラミングインターフェースを提供しており、プログラマーのデータベースアプリケーションプログラム開発を容易に行なうことができます。


図版

ODBC


Windows 環境において、Visual Basic、Visual C++ のような RAD ツールで ALTIBASE サーバーに接続してデータベースを活用するためには、ODBC ドライバーを活用しなければなりません。 ALTIBASE は、ODBC ドライバーを提供しており、ユーザはこのドライバーを自分の Windows システムに登録することにより RAD ツールで ALTIBASE を使うことができます。 ALTIBASE の ODBC は、Core Level、Level 1、そして Level 2 の仕様をサポートします。


SQLCLI


ALTIBASE は、従来の RDBMS がサポートする標準プログラミングインターフェースを提供しており、プログラマーのデータベースアプリケーションプログラム開発を容易に行なうことができます。


JDBC


ウェブ環境において、データベースアプリケーションプログラムを開発したり、アプリケーションプログラムの移植性を考慮して JAVA の仮想マシンで行われるデータベースアプリケーションプログラムを開発するために、ALTIBASE は、JDBC をサポートします。JDBC のインターフェースを活用すると、ALTIBASE と BEA 社の WebLogic を連動しやすく、JSP で Altibase アプリケーションプログラムを開発することが更に容易になります。 ALTIBASE の JDBC は、JDBC 2.0 仕様をサポートしています。


SES Pre-Compiler


SES C / C++ 前処理機(pre-compiler)は、SQLCLI に比べて比較的に簡単に ALTIBASE アプリケーションプログラムが作成できます。C または C++ プログラミング言語で Embedded SQL を使うことにより、ALTIBASE のデータベースへ簡単にアクセスできますので、プログラマーの記述するコード量を削減し、SQLCLI と同等の性能を持つプログラムが作成できます。 SES C / C++ は、Oracle の Pro*C / C++ と同じ仕様をサポートするため、従来の Oracle のアプリケーションプログラムを ALTIBASE に簡単に移植できます。


PSM


PSM は、Oracle の Stored Procedure のような機能を提供するデータベーススクリプト言語です。ユーザは、複雑なビジネスロジックを PSM で作成して ALTIBASE サーバーに保存しておき、必要な時にクライアントから呼出して使用すると、全体的なデータベースの性能を向上することができます。 PSM は、ストアド・プロシージャや関数をサポートし、ビジネスロジックが簡単に作成できるように、if、case、while、for、loop、continue、exit、null statement のようなフロー制御文を提供しています。


  レプリケーション

BCPのための遠隔地バックアップを実現するレプリケーション


ミッションクリティカルな分野のデータベースサービスは、どのような場合でもサービスが中断されてはいけません。データベースシステムの故障や、データベースメディア(ディスク)の破損により、サービスが中断された場合、提供できなかったサービスに対する経済的な損失を被るだけではなく、会社の信頼度も低下してしまいます。 このような問題を解決するための対策案が、データベースの二重化機能(レプリケーション)です。


図版

データベースの二重化とは ?


レプリケーションとは、物理的に離れている複数のデータベースに対し、ローカルデータベースの変更された内容をリモートデータベースにコピーして管理することを言います。 ユーザは、一つのデータベースについてのみ作業を行ってもデータベースの二重化システムにつながっている他のデータベースにも作業内容が同様に適用され、複数のデータベースを同時に管理することができます。このようなデータベースの二重化は、データベースの無停止サービスを可能にします。


二重化方法


ALTIBASE は、データベースの変更ログを使用した Point-to-Point の二重化技法を使います。ローカルサーバーがデータベースの変更ログを XLOG という実行計画に置換えてリモートサーバーに転送し、リモートサーバーは、この XLOG をトランザクションを回復するのと同様な方法で反映します。 ALTIBASE は二重化したサーバーの独立性を保障するため、二重化トランザクションがローカルトランザクションに与える影響を最小化します。二重化は Active-Active、Active-Standby のモードを提供しており、ALTIBASE 内部で Replication Manager、Replication Sender、Replication Receiver という二重化処理を実行する専用スレッドで処理を実行します。


二重化の特徴


  • テーブル単位の二重化
  • SQL と同様なユーザインターフェース
  • 二重化オブジェクトを導入し、二重化の情報をデータベースに保存して運用
  • サーバーの故障またはネットワーク切断の自動感知、及び対応
  • サーバーの故障の際、二重化されたサーバーへの即時アクセスによる高い可用性の提供
  • 二重化データの衝突に対する自動解決
  • 二重化中も独立したシステムの性能の 90% 以上を維持
  • データをコピーしても、ALTIBASE サーバーや DB に対する安定性を保障
  • リモートサーバーの性能がローカルサーバーの性能に影響を与えないため、サーバー間の独立性を保障
  • Active-Active の運用形態による負荷分散を提供
  • 相手サーバーのシャットダウン中に発生したDBの変更も復旧後、二重化を保障

二重化インターフェース


ALTIBASE の二重化インターフェースは、SQL に同様な構文で提供されるため、対話型 SQL ツールまたはアプリケーションプログラムから、簡単に利用することができます。二重化のインターフェースは、次の通りです。

create replication rep1
with remotehost、portno
from localtableA to remotetableA、
from localtableB to remotetableB、…;
drop replication rep1;
alter replication rep1 start;
alter replication rep1 stop;
alter replication rep1 sync;
alter replication rep1 quickstart;

二重化 Topology


ALTIBASE は、N-Way 二重化を提供することにより、Network の構造の二重化位相を提供します。


二重化 Mission


ALTIBASE の二重化は次のようなミッションを基に開発されています。

  • High Availability
  • サービス中のシステムまたは S / W が故障した場合、使用可能なシステムへ即時アクセスができるようにデータ二重化を提供します。また、複数のシステムにデータを二重化できるように水平的な拡張性をサポートします。

  • Database Consistency
  • Active-Active の環境でデータベースの二重化を行うと、一つのデータベースサーバー内で二重化トランザクションとローカルトランザクションが同時に同じデータにアクセスする場合があります。そのような場合、データの衝突が発生しますが、ALTIBASE はロールべースでデータの衝突を自動解決します。衝突した内容を特定のログファイルに記録しておくことにより、管理者がその内容を閲覧し、適切に対応することができます。

  • High Performance
  • データベースを二重化することに伴うオーバーヘッドを最小化し、単独のシステムでトランザクションを処理する時の性能をほぼそのまま維持できるようにしています。ローカル サーバーのデータへのアクセスや二重化のための作業を最適化することにより、ALTIBASE のトランザクション処理にかかる負担を最小化します。具体的には、データベースの変更ログを二重化ログの XLOG 構造に変換してリモートサーバーに転送し、この XLOG を利用してトラザクションを復旧するような方法で二重化を行います。この方法は少し複雑になりますが、ローカルサーバーの性能低下を最小化するだけでなく、二重化そのものの性能も最大化します。

  • Load Balancing & Scalability
  • ALTIBASE のマルチサーバー運用環境でサービスするトランザクションを二つ以上のグループに分け、それぞれのトランザクションが該当サーバーで行われるようにし、各サーバーで変更されるデータベースの内容を他のサーバーに反映させることにより、サーバーにかかる負荷を分散させることができます。

  メッセージキューイング

SQLベースのメッセージキュー操作機能


Message Queuing System は、それぞれのアプリケーションがメッセージを利用し、双方円滑に通信できるようにサポートするシステムのことを言います。 このとき、通信する送信側と受信側の 2 つのアプリケーションは、単一システムの内部または物理的に区分されていますが、ネットワークでつながった他のシステムに存在することもあります。 Message Queuing System は、2 つのアプリケーションをつなぐためのソケットの生成や、パケットに対する flow control、例外状況の処理に対する全てのものをアプリケーションで直接処理しなければならない煩わしさを最小化します。


図版

ALTIBASE Message Queuing System


ALTIBASE は、message queuing system で使われる Queue を一般のユーザテーブルとして取り扱い、管理します。従って、それぞれのQueueに対するロギング機能やトランザクション機能、同時性制御などのような ALTIBASE の全ての機能を Message Queuing System でそのまま使うことができます。


ALTIBASE Message Queuing System 機能


  • SQL 文による Queue 関連インターフェースの提供により、ユーザが簡単に使うことができる
  • Queue テーブルに対する二重化構成のサポート
  • Queue に搭載する最大メッセージ数の指定が可能
  • Queue に挿入されるメッセージのデータタイプを任意で指定可能。一旦、Queue を生成した後、alter table 構文を利用してユーザが希望するデータタイプを持つカラムを追加して使うことができる
  • enqueue されるそれぞれのメッセージに対し、enqueue time を自動で記録
  • メッセージに対し、ユーザが付与するメッセージ id である correlation id 機能をサポート
  • メッセージに優先順位をつけ、enqueue / dequeue の際に優先順位によるメッセージ処理が可能
  • dequeue するメッセージがない場合、waiting option を提供することにより、ユーザの柔軟な対処が可能
  • browse、remove などの二つの dequeue mode をサポート
  • SQL 文の形の Queue 関連インターフェースの提供により、C / C++、Java などのような全てのアプリケーションプログラムで使用が可能
  • enqueue / dequeue されるメッセージ数だけでなく、システムに存在する Queue リスト、Queue が使うメモリサイズなど、Queue と関連した情報のモニタリング方法を提供

通信分野


create Queue q1
drop Queue q1
enqueue into q1
dequeue * from q1

  ツール

ALTIBASE運用管理・支援ツール


ユーザーがデータベースアプリケーションを効率的に開発・管理するためには、様々な付加機能を提供するデータベースツールが必要となります。例えば、クエリーの実行ツールやデータのアップロードツールなどです。
ALTIBASE は、ユーザーが効率的かつ、簡単な方法でデータベースを管理できるよう以下のツールを提供します。


DbAdmin


このユーティリティは、ALTIBASE のサーバー管理ツールです。データベース管理者は、このユーティリティを利用して ALTIBASE サーバーをスタート/終了させ、サーバー運用中にその状態を把握し、適切な管理が行えます。特に、configuration 情報、セッション情報、メモリ使用情報、データベース情報、二重化情報を閲覧し、管理できる機能を提供します。


iSQL


iSQL は、対話型クエリ処理のユーティリティです。このユーティリティを利用してユーザは ALTIBASE がサポートする全ての SQL 文を直接作成・実行することができます。また、Stored procedure や store function を生成・実行することもできます。その外にも、最近使ったコマンドの自動保存や再実行ができ、データ検索結果の出力フォーマットを編集することができます。

iLoader


データベースを決まったフォーマットのファイルにダウンロードしたり、アップロードしたりする機能をサポートするツールです。このユティリティを使用して Oracle または SQL Server からダウンロードしたデータを ALTIBASE にアップロードしたり、ALTIBASE がダウンロードしたデータを Oracle または SQL Server にそれぞれアップロードすることができます。

Shmutil


メモリデータベースの領域として、プロセスローカルメモリの代わりに共有メモリを使うことができます。共有メモリを使う場合は、特別な管理が必要ですが、そのために ALTIBASE は shmutil ユーティリティを提供します。このユーティリティは、データベースを配置した共有メモリの情報を提供し、その共有メモリをシステムに返還する機能、共有メモリ上のデータベースを特定のファイルにバックアップする機能などを提供します。また、ALTIBASE サーバーを再実行する前に、共有メモリ上のデータベース状態が完全なのかどうかを判断する機能も提供します。

Audit


Audit は、二重化関係にあるテーブル間の整合性を維持するための機能を提供するユーティリティです。二重化テーブルの間には、挿入の不一致、更新の不一致、削除の不一致がある場合があります。Audit は、テーブル単位で比較・検査し、自動で不一致情報を出力する機能や、不一致が発生した場合、二つのテーブルを一致させる機能を提供します。

  パフォーマンス

OLTP、DWHで利用できる高性能メモリデータベース

TPC-H 性能


従来のメモリデータベースの用途は、通信分野などにおいて単なる簡単なトランザクションを高速で処理するために主に使われてきましたが、最近においてはビリング、顧客管理など、複雑なアプリケーションにもメモリデータベースが適用されてきています。 一般的なメモリデータベースは、単純なクエリ処理の性能に重点をおいていますが、ALTIBASE は汎用のデータベースとして利用できることを目標に複雑なクエリ処理をサポートするだけでなく、その処理性能にも重点をおいてより優れたものとなるよう開発しています。複雑なSQLの処理性能に対するベンチマーキングツールとしては TPC-H があります。ALTIBASE は、TPC-H のベンチマーキング性能においても優れた結果を出しています。


図版

TPC-H の性能に対するベンチマーキングに使われたクエリ要約表


No. Query 特徴
Q 1 600 万件に対する index scan、8 個の aggregation 演算(SUM、AVG、COUNT)を含む、2 columns group by、2 columns order by
Q 2 5 join(20 万、1 万、80 万、25、5)in outer query、4 join(80 万、1 万、25、5)in subquery、4 columns order by、outer column reference(join predicate)
Q 3 3 join(15 万、150 万、600 万)、sum(expression)、3 columns group by、2 columns order by、limit
Q 4 count(*)、1 column group by、1 column order by、exists subquery(600 万)、 outer column reference
Q 5 6 join(15 万、150 万、600 万、1 万、25、5)、sum(expression)、1 column group by、1 column order by
Q 6 sum(expression)、600 万件に対する index scan
Q 7 inline view、6 join(1 万、600 万、150 万、15 万、25、25)、AND / OR が混合された predicates、3 columns group by、3 columns order by、SUM
Q 8 8 join(20 万、1 万、600 万、150 万、15 万、25、25、5)、inline view、1 column group by、1 column order by、aggregation
Q 9 star query、6 join(20 万、1 万、600 万、80 万、150 万、25)、inline view、2 columns group by、2 columns order by、like predicate
Q 10 4 join(15 万、150 万、600 万、25)、7 column group by、1 column order by、aggregation、limit
Q 11 3 join(80 万、1 万、25)in outer query、3 join(80 万、1 万、25)in subquery、1 column group by、having、1 column order by、aggregation
Q 12 2 join(150 万、600 万)、1 column group by、1 column order by、aggregation
Q 13 left outer join(15 万、150 万)、inline view、1 column group by、2 column order by、like predicate、aggregation
Q 14 2 join(600 万、20 万)、aggregation、many expression in target
Q 15 create view => inline view、subquery、1 column order by、aggregation
Q 16 2 join(80 万、20 万)、in predicates、like predicate、3 columns group by、4 columns order by、count(distinct)、subquery
Q 17 2 join(600 万、20 万)、subquery(600 万)、outer column reference(join predicate)、aggregation
Q 18 3 join(15 万、150 万、600 万)、subquery(600 万)、5 columns group by、having、2 columns order by、aggregation, limit
Q 19 複雑な predicate 使用(多くの AND、OR 演算者が使用、in predicates)、2 join(600 万、20 万)、aggregation
Q 20 2 join、多くの subquery、outer column reference、1 column order by、ggregation
Q 21 4 join(1 万、600 万、150 万、25)、exists/not exists subquery(600 万)、outer column reference、1 column group by、2 columns order by
Q 22 複雑な predicate を使用(in predicate、substring、not exists subquery)、1 column group by、1 column order by、aggregation

単純なクエリの性能


データベースの基本演算に対する ALTIBASE の性能は以下の表の通りです。
区分 Throughput(TPS)
Select Minimum 6,000 ~ Maximum 20,000
Insert Minimum 5,000 ~ Maximum 11,000
Update Minimum 5,000 ~ Maximum 13,000
Delete Minimum 5,000 ~ Maximum 12,000

  • 性能測定環境:Sun E3500 4CPU X 400MHz 1G Memory
  • 性能測定プログラムの作成方式:Client-Server 方式
  • テーブルの領域:メインメモリ

性能の拡張性


クライアント数の増加による ALTIBASE の Load Scalability は、下の図表のように非常に優れていることを示しています。クライアント数が増えれば増えるほど、全体の処理量(throughpt)は一定に増加し、クライアント数が CPU 数より 2.5 倍程度以上に増えると、徐々に非常に小さい幅で減少することが確認できます。

  アプリケーション適用範囲

リアルタイムシステムから業務システムまで広い適用範囲


ハイブリッドメモリデータベースは、データの処理量や規模に制約を受けず、高速なトランザクション処理性能を保障できるため、適用範囲に制限されることなく幅広い分野で適用することができます。 特に、ローエンドからハイエンドに至るまで、伝統的に強みをみせてきた金融、通信に限らず、インターネットポータル、銀行、製造、流通、公共など、全ての産業分野に幅広く適用することができます。 ALTIBASEの適用可能な分野は、以下の通りです。


通信分野


  • Data & voice switching servers
  • Computer telephony integration(CTI)
  • Real-time network management systems
  • HLR or VLR sever for CDMA and IMT2000
  • WAP servers
  • VoIP servers
  • Intelligent network service systems

インターネットサービス分野


  • Areas for high performance of transaction processing
  • Areas for very frequently connect to database servers
  • Customer certification and dealings on E-commerce
  • Web tracking and certification of page views
  • Real-time contents and advertisement servers
  • Internet game servers

金融サービス分野


  • Real-time collection and analysis of stock quotations
  • Cyber banking
  • Cyber stock trading
  • Alternative of ISAM

リアルタイム処理分野


  • Automatic meter reading data service systems
  • Data collection & control on FA
  • Aviation control centers
  • Atomic pile control
  • Radar signal analysis systems
  • Real-time GIS engines
  • Intelligent Traffic Systems
  • VOD / Streaming Data Processing
  • EMS / NMS
  • Statistics and Billing
  • RFID / Telematics
  • Sensor Network
  • History Data Processing
  • Finance / Public / Education and General DBMS

  データベース連携

RDBMSとのデータ連携機能


ALTIBASE では、他社製の DBMS と連携することが可能です。一部の連携ツールについては、ソースを公開しておりますのでお客様のシステム環境への対応が柔軟な連携ツールとしてカスタマイズ頂くことも可能です。


図版

  • テーブル定義とデータをコピー
  • 他社製 DBMS からのデータ移行支援
    他社製 DBMS 上のテーブル定義を ALTIBASE に定義することが可能です。
    テーブル単位で指定します。
    データも同時にコピーすることが可能です。

  • 変更データをリアルタイムに同期
  • 他社製 DBMS 上で更新されたデータを ALTIBASE にも反映させることが可能です。
    また ALTIBASE で更新されたデータを他社製 DBMS に反映させることも可能です。

他社製 DBMS 対応


現在対応または対応予定の他社製 DBMS は以下の通りです。今後、以下リスト以外の DBMS 製品にも順次対応していく予定です。
ツール名 連携元DB 連携先DB 同期方式 備考
ALTIMIG ORACLE ALTIBASE 一括同期 ソースを提供
JSync ORACLE ALTIBASE 差分同期 ソースを提供

ソース公開について


他社 DBMS との連携について幅広く対応することを目的とし、モデルとなるソースを公開します。ソースについては自由に改善可能です。興味のある方はこちらからお問い合わせください。