|
従業員が数十人から数十人程度の中小企業の経営者から、単一のアプリケーションに数千元、あるいは数万元も費やすのを避けたいため、無料のデータベースソフトウェアの選択肢について問い合わせを受けることがよくあります。実際、中国の多くの中小企業はこのように事業を運営しています。これらの企業は、製品情報や在庫データを追跡するために小規模なデータベースを必要としており、データ量はそれほど多くありません。以前、Microsoft Officeに組み込まれているAccessデータベースを使用している中小企業を見ましたが、それでも使い勝手が悪いと感じていました。そこで、編集者は中小企業に適したオープンソースのデータベースソフトウェアをいくつかご紹介します。 オープンソースデータベースMySQL MySQLは、スウェーデンのMySQL AB社によって開発された、小規模なオープンソースのリレーショナルデータベース管理システムです。現在、MySQLはインターネット上の中小規模のウェブサイトで広く利用されています。その小型さ、高速性、低い総所有コスト、そして特にオープンソースであることから、多くの中小規模のウェブサイトがデータベースとしてMySQLを選択し、全体的なコストを削減しています。 MySQLは、C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby、Tclなど、複数のプログラミング言語に対応したAPIを提供しています。CおよびC++で記述され、様々なコンパイラでテストされているため、MySQLは高いソースコード移植性を実現しています。このデータベースは、Unix、Linux、Windowsなど、ほぼすべてのオペレーティングシステム(AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windowsなど)をサポートしています。最も重要なのは、数千万件ものレコードを処理できる大規模なデータベースであるということです。 同時に、MySQL の多くのブランチ バージョンも開発されており、これらのデータベースは強く推奨されています。 まず1つ目はMariaDBです。これはMySQLのフォークで、Mariaストレージエンジンを使用しています。MySQLのオリジナル開発者であるMichael Widenius氏が設立した企業によって開発された、無料のオープンソースデータベースサーバーです。MySQLと比較すると、MariaDBはMariaストレージエンジン、PBXTストレージエンジン、XtraDBストレージエンジン、FederatedXストレージエンジンなど、より多くのエンジンを備えているため、より強力です。これにより、レプリケーションクエリ処理の高速化、実行速度の向上、機能テストの改善、Unicodeソートのサポートなど、様々な利点が得られます。 次に、MySQLデータベースサーバーを改良したrconaがあります。これはMySQLと比較して、機能とパフォーマンスの両方が大幅に向上しています。このバージョンでは、高負荷時のInnoDBのパフォーマンスが向上するだけでなく、DBAにとって非常に便利なパフォーマンス診断ツールや、サーバーの動作を制御するための多数のパラメータとコマンドも提供されます。 3つ目はPercona Serverです。これは、google-mysql-tools、Proven Scaling、Open QueryなどのMySQLの修正を使用しています。ただし、MySQLのサーバーバージョンのみが含まれており、MySQLコネクタやGUIツールには対応する改善は提供されていません。 NoSQLデータベース NoSQLは文字通り、「Not Only SQL」の略です。データベース業界における革新的なムーブメントとして、早い段階で提唱され、2009年までに大きな注目を集めました。NoSQLの支持者は、非リレーショナルデータストレージの使用を提唱しており、これは現在主流となっているリレーショナルデータベースとは一線を画す、間違いなく斬新な視点を提示する概念です。 もちろん、NoSQLもWeb 2.0ウェブサイトの台頭とともに大きな進歩を遂げてきました。重要なニーズは、従来のリレーショナルデータベースではWeb 2.0ウェブサイト、特に超大規模かつ高並列性を備えたSNS型の純粋に動的なWeb 2.0ウェブサイトの処理に苦戦し、多くの克服できない問題が露呈していることです。一方、非リレーショナルデータベースは、その固有の特性により、非常に急速に発展しました。 まず最初におすすめするのは、コミュニティ版のOracle NoSQL Databaseです。このOracle NoSQL Databaseは、10月4日のOracle Global Directoryで発表されたBig Data Applianceのコンポーネントの一つです。Big Data Applianceは、Hadoop、NoSQL Database、Oracle Database Hadoop Adapter、Oracle Database Hadoop Loader、そしてRプログラミング言語を統合したシステムです。 次に、Membaseをお勧めします。MembaseはNoSQLファミリーの新たなヘビー級メンバーです。Membaseはオープンソースプロジェクトであり、ソースコードはApache 2.0ライセンスの下でライセンスされています。プロジェクトはGitHubでホストされています。ソースtarballとLinuxバイナリパッケージのベータ版は現在ダウンロード可能です。この製品は、North Scaleのコアmemcachedチームのメンバーを中心に開発されました。このチームには、大規模なオンラインゲームおよびコミュニティネットワーキングスペースの主要なコントリビューターおよびプロバイダーであるZyngaとNHNのエンジニアも含まれています。 さらに、Membaseはインストールと操作が容易で、単一ノードからクラスターへの拡張が容易で、memcachedのプラグアンドプレイ機能(ワイヤプロトコル互換性)を提供するため、開発者や運用者にとって比較的導入障壁が低くなっています。キャッシングソリューションとして、Memcachedは様々な分野(特に大容量Webアプリケーション)で広く利用されており、その基本コードの一部はMembaseサーバーのフロントエンドに直接適用されています。複数のプログラミング言語やフレームワークとの互換性により、Membaseは優れた再利用性を提供しています。インストールと設定の面では、Membaseは効果的なグラフィカルインターフェースとプログラミングインターフェースを提供し、設定可能なアラート情報も提供しています。 Membaseは、クラスタ容量の増強を目的とした統合ノード間のレプリケーションなど、線形スケーラビリティの提供を目指しています。ただし、データの再分配は依然として必要です。 3つ目のおすすめはHibariです。日本語で「雲の雀」を意味するHibariは、高信頼性と大規模データストレージ向けに設計されたデータベースエンジンです。Webメール、ソーシャルネットワーキング、T/Pレベルのデータストレージを必要とするクラウドコンピューティング環境など、様々な環境で利用できます。Hibariは、Java、C/C++、Python、Ruby、Erlangのクライアントをサポートしています。 4つ目のおすすめはmemcachedbです。これはSina.comが開発したオープンソースプロジェクトで、Berkeley DBの永続ストレージメカニズムと非同期マスタースレーブレプリケーションメカニズムをmemcached分散キャッシュサーバーに追加します。これにより、memcachedにトランザクションリカバリ機能、永続化機能、分散レプリケーション機能が付与され、超高速な読み書き速度が求められるものの、厳格なトランザクション制約を必要とせず、永続的に保存できるアプリケーションシナリオに非常に適しています。例えば、Sina Blogではmemcachedbが使用されています。 5つ目のおすすめはLevelDBです。これはGoogleが実装した高効率のキーバリューデータベースで、現在のバージョン1.2は数十億単位のデータ量に対応できます。この規模でも非常に高いパフォーマンスを維持しているのは、主に優れた設計、特にLSMアルゴリズムによるものです。LevelDBはシングルプロセスサービスでありながら非常に高いパフォーマンスを発揮します。Q6600 CPUを4基搭載したマシンでは、毎秒40万件以上のデータエントリ書き込みが可能で、ランダム読み取り性能は毎秒10万件を超えます。 XMLデータベースの利点 XMLデータベースは、XML形式のドキュメントの保存と取得をサポートするデータ管理システムです。開発者は、このシステム内で、指定された形式でXMLドキュメントのクエリ、エクスポート、シリアル化を行うことができます。現在、XMLデータベースには3つの種類があります。XML処理が可能なデータベースであるXMLEnabledDatabase(XEDB)、純粋なXMLデータベースであるNativeXMLDatabase(NXD)、そしてハイブリッドXMLデータベースであるHybridXMLDatabase(HXD)です。 リレーショナルデータベースにおけるXMLサポートの最新のアプローチは、ドキュメントをリレーショナルテーブルに収まるように分割(または分解)するか、ドキュメントを文字またはバイナリラージオブジェクト(CLOBまたはBLOB)としてそのまま保存することでした。どちらの方法も、XMLモデルをリレーショナルモデルに強制的に変換しようとします。しかし、どちらのアプローチにも、機能とパフォーマンスの面で大きな制限があります。ハイブリッドモデルでは、XMLをDOMに似たモデルに保存します。XMLデータは、高速なナビゲーションとクエリ実行、そして簡素化されたインデックス作成のために、バッファリングされたデータページにフォーマットされます。 ここで私が推奨する主なXMLデータベースはSednaです。ネイティブXMLデータベースとして謳われており、永続ストレージ、ACIDトランザクション、インデックス作成、セキュリティ、ホットバックアップ、UTF-8エンコーディングなど、フル機能のコアデータベースサービスを提供します。W3C XQuery仕様を実装しており、全文検索とノードレベルの更新操作をサポートしています。 2つ目のXMLデータベースはBaseXです。このデータベースは圧縮されたXMLデータの保存に使用され、XPathとXQueryの効率的な実装を提供し、フロントエンドのユーザーインターフェースも提供します。 3つ目のおすすめはXMLDBです。このデータベースは、リレーショナルデータベースを使用して任意のXML文書を保存します。その保存メカニズムにより、文書検索は非常に高速で、XSL変換も非常に高速です。XMLDBは、Webアプリケーションで使用できるPHPモジュールも提供しています。 4つ目の推奨事項はX-Hive/DBです。これは、高度なXMLデータ処理およびストレージ機能を必要とするソフトウェア開発者向けに設計された、強力な独自仕様のXMLデータベースです。X-Hive/DBのJava APIには、XMLデータの保存、クエリ、取得、変換、公開のためのメソッドが含まれています。 従来のリレーショナルデータベースと比較して、XMLデータベースには次の利点があります。まず、XMLデータベースは半構造化データを効果的に保存および管理できます。たとえば、Webページのコンテンツは半構造化データの一種であり、従来のリレーショナルデータベースでは効果的に管理できません。次に、タグとパスに対する操作を提供します。従来のデータベース言語では、データ要素の値に対する操作は許可されていますが、要素名に対する操作は許可されていませんでしたが、半構造化データベースはタグ名とパスに対する操作を提供します。3つ目に、データが階層特性を持つ場合、XMLデータ形式はこれらの階層特性を明確に表現するため、XMLデータベースは階層データの操作を容易にします。XMLデータベースは、複雑なデータ構造を持つデータセットの管理に適しています。情報がすでにXML形式で保存されている場合、XMLデータベースはドキュメントの保存と検索を容易にします。ドキュメントは便利で実用的な方法で検索でき、高品質の全文検索エンジンを提供できます。さらに、XMLデータベースは異種のドキュメント構造を保存および照会できるため、異種の情報へのアクセスをサポートします。 [編集者のおすすめ]
|