特徴

このページではBraidDBの特徴を紹介します。

BraidDBはとにかく高性能です。

BraidDBはJava言語で作られていますが、ネイティブ言語で作られたデータベースより高速です。次に示すMySQLとのベンチマークの通り圧倒的にBraidDBの方が高速です。この例はBraidDBの基礎性能が高いことを示しているので、単純に既存システムのデータ処理を高速化するのに使えます。

整列

グループ化

BraidDBは高速なだけではありません。数十メガバイトのメモリでテラバイトのデータを処理し、10億行の集計を行ってもGCが発生しないほど効率的にメモリを使います。つまり組込分野にも適しています。

さらにBraidDBはJavaVM上で動作するため、アプリケーションとの相互作用にオーバーヘッドがかからないぶん高速・省メモリです。この効果はJava言語上でのデータ処理が多い場合に顕著になります。

BraidDB構成

構成

BraidDBにはトランザクションがありません。

あらゆる性能要求に柔軟に対応できることを優先しているBraidDBはスケーラビリティに悪影響を与えるトランザクションを標準ではサポートしていません。そのためデータの一貫性に関する複雑な排他やロールバックが必要な分野には適していません。ただし、ゆるいトランザクションで問題ない分野は、その仕掛けを作るのが容易です。そのような分野ではBraidDBを使うことで高いスケーラビリティを達成できます。

BraidDBの性能は計算機数に比例します。

BraidDBの性能はクラスタを構成する計算機数に比例して向上するので、他のデータベースでは処理できない規模のデータであっても合理的な設備投資で実現できます。

BraidDBは様々な性能要求に柔軟に対応できます。

アプリケーションに影響を与えることなく、適用分野の様々な知識をデータの形式・配置方法・アクセス方法や計算の処理方法に反映できます。これにより、計算時間とメモリ容量のトレードオフだけでは達成できない性能を対応できます。さらに後からこの対応ができるため、開発の立ち上がりが早くなります。

BraidDBはどんな形式のデータでも処理できます。

次の図で示すように、BraidDB APIを使ってアダプタを作成すると、どんな形式のデータ(CSV・XML・Execl・Word・Access・MySQL・Oracle・DB2・WebAPI・emailなど)であってもBraidDBデータモデルとして扱えるようになります。BraidDB APIには様々なひながたが用意されていてアダプタを簡単に作れます。

BraidDBによる様々なデータの統合

BraidDBデータモデルとして扱えるということは、BraidDB APIを使って処理できるだけでなく、Braid言語で記述された問い合わせで検索・集計することもできます。これは様々な形式のデータに対するデータ処理を簡単に作れることを意味します。さらに、アダプタは元になるデータにアクセスするので、元になるデータをあらかじめ変換しておく必要がありません。これによりディスク容量が節約できることもあります。

BraidDBは様々な環境で動作します。

BraidDBは純粋にJava言語だけに依存して作られているので様々な環境で動作します。特に、BraidDBは実行モジュールの容量が小さく、実行時に必要なメモリをかなり少なく設定できるので携帯電話や家電でも動作します。

様々な環境で動作するBraidDB

BraidDBは手軽に使えます。

BraidDBの実行モジュールはJava言語のライブラリとしてアプリケーションに組み込めます。これによりユーザがBraidDBをインストールする手間を省略できます。さらに、BraidDBはBraidDB APIで完全に制御できるため、試験プログラムや試験環境の準備が手軽に自動化できます。

Braid言語が性能と生産性を大幅に高めます。

Braid言語には次の効果があります。

  • Javascript言語に似ているので記述が簡潔です。Javascript言語を知っている人であれば短時間で習得できます。
  • 実行前の型検査が多くの間違いを網羅的に検出し、試験時間を大幅に短縮します。強力な型推論機能があるので、型検査のために型を指定する必要がほとんどなく、記述の簡潔さは維持されます。
  • 実行前の型推論が効率的なコード生成を可能し、性能を高めます。
  • JSONやXMLのようなツリー構造のデータを直接扱えます。SQL言語では直接扱えないので複数のテーブルへ分解することになります。そうすると分解・統合のための余分な処理時間とディスク容量が必要になるだけではなく、記述が非常に複雑になります。
  • オブジェクト指向プログラミングや関数型プログラミングでお馴染みの継承・関数・クロージャ・ローカル変数など様々な抽象化をサポートしているので、問い合わせが複雑であっても記述の簡潔さを維持できます。
  • 計算機で計算可能な計算であればどんなに複雑でも記述できます。SQL言語はそうではないので複雑さによってはSQL言語と別の言語で記述することになります。そうすると記述が分断されてしまうので性能と生産性が低下します。
  • 継承を使うことで異なる形式のデータを統一的に処理できます。これにより問い合わせを簡潔に記述できるだけでなく、共通データをまとめることができるためディスク容量を節約できます。この性質は古い形式のデータを新しい形式へ一括変換せずにサービスを継続できることを意味します。処理時間的やディスク容量的に変換できないほど大規模なデータのための新しい形式が生まれる場合に特に重要です。

ホーム | RSS | 採用情報 | 会社情報