CLOSE UPコラム - 渡部 徹太郎 - | MongoDBで楽しい開発!

MongoDBで楽しい開発!

CLOSE UPコラム - 渡部 徹太郎 -

2013年08月22日
野村総合研究所 渡部 徹太郎

すぐに使える!

楽しく開発するためには、すぐに使えることが重要です。データの準備だけで時間も費やしてしまうのでは、楽しさも半減してしまいます。
MongoDBと従来のRDBMS(※1)を比べて、はるかに簡単にデータを準備でき、すぐに開発を開始することができます。

例えば、これから開発するアプリケーションで「"ユーザ"が複数の"スキル"を持つ」というデータ構造を作り、そこにデータを挿入する場合を考えてみましょう。

従来のRDBMSでは、図1のようにいくつもの準備が必要です。まずCREATE DATABASE文でデータベースを作り、CREATE TABLE文でテーブルを作ります。その際、データの型や大きさを定義しなければなりません。

また、1対多のデータ構造を作ろうと思うと、二つのテーブルを作り、二つのテーブルを結びつけるために、外部キー等を設定しなければなりません。データを挿入する場合も、それぞれのテーブルにデータを挿入する必要があります。
これでようやく完了です。

一方、MongoDBではuseコマンドでデータベース名を指定し、次の操作でいきなりデータを挿入できます。また、挿入できるデータもJSON(※2)形式で表現したオブジェクトを直接挿入できます。1対多のデータ構造であっても、JSONを入れ子で表現することができます。
RDBMSのように正規化して複数のテーブルに分けたりする必要ありません。 この準備の少なさと、直観的な操作が開発を楽しくさせてくれます!

【注釈】

※1) RDBMS: リレーショナルデータベース管理システム。MySQLやPostgreSQL等の表形式のデータを扱うシステムの事。
※2) JSON: JavaScript Object Notation。JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語。


次のページへ続く

【次ページ】SQLライクなクエリで覚えやすい!

OSSNEWSに広告を掲載しませんか?

著者プロフィール

野村総合研究所 渡部 徹太郎

野村総合研究所 OpenStandia所属。オープンソースを使ったSIやサポートの業務に従事。2012年から丸の内MongoDB勉強会を始める。趣味は自宅サーバ。好きなものはLinuxとRuby。

関連オープンソース

SQLite(エスキューライト)

  • データベース

SQLite(エスキューライト)とは、軽量コンパクトなリレーショナルデータベースシステムです。主に組み込み用途や、小規模システムのデータストアとして利用されます。

Apache Hbase(アパッチ エイチベース)

  • データベース

Apache Hbase(アパッチ エイチベース)とは、大規模分散データベース管理システムです。「Hadoopベース」「NoSQL」「スケーラブル」などの特徴があります。

Apache Cassandra(アパッチ カサンドラ)

  • データベース

Apache Cassandra(アパッチ カサンドラ)とは、オープンソースの分散データベース管理システムです。構造化キーバリュー型データストアを提供します。「単一障害点を持たない」「スケーラブル」「高速性」などの特徴があります。

WSO2 Enterprise Service Bus(ダブルエスオーツー エンタープライズ サービス バス)

  • SOA

WSO2 Enterprise Service Bus(ダブルエスオーツー エンタープライズ サービス バス)とは、アプリケーション統合/連携用ソリューションです。異なるアプリケーション間の通信を包括的にサポートします。

Apache Traffic Server(アパッチ トラフィック サーバ)

  • プロキシサーバ

Apache Traffic Server(アパッチ トラフィック サーバ)とは、高性能HTTPキャッシュプロキシサーバです。静的Webコンテンツをキャッシュすることで、ネットワーク効率化とパフォーマンス改善を行います。

Apache CouchDB(アパッチカウチデービー)

  • データベース

Apache CouchDB(アパッチカウチデービー)。ドキュメント指向データベースです。「RESTful HTTP/JSON API」「スキーマレス(NoSQL)」「分散型」「スケーラブル」「耐障害性」などの特徴があります。

PowerDNS(パワーディーエヌエス)

  • DNS

PowerDNS(パワーディーエヌエス)。オープンソースのDNSサーバです。RDBMSなどの豊富なバックエンドを利用でき、管理サポート機能が豊富に用意されています。

memcached(メムキャッシュディー)

  • クラスタリング

memcached(メムキャッシュディー)。高性能分散メモリキャッシュサーバです。既存システムに導入してシステムレスポンスの高速化を図れます。

Redis(レディス)

  • データベース

Redis(レディス)。インメモリベースのキーバリューモデル型NoSQLデータベースです。非常に高速な読み書き/アクセスが可能で、データ永続化機能も備えています。

Apache Mesos(アパッチメソス)

  • クラスタリング

Apache Mesos(アパッチメソス)。クラスタリソースマネージャです。分散アプリケーション/分散フレームワークを複数のノード上で稼働させ、効率的なリソース分離/共有機能を提供します。

WildFly(ワイルドフライ)

  • APサーバ

WildFly(ワイルドフライ)。オープンソースJavaEEアプリケーションサーバです。JBossコミュニティで開発されています。「JBoss Application Server」から「WildFly」に改名されました。

MySQL MHA(マイエスキューエルエムエイチエー)

  • クラスタリング

MySQL MHA(マイエスキューエル エムエイチエー)。MySQLマスタ障害発生時に、MySQLマスタの自動フェイルオーバーを行い高可用性を実現するオープンソースツールです。

MariaDB MaxScale(マリアディービーマックススケール)

  • プロキシサーバ

MariaDB MaxScale(マリアディービーマックススケール)。オープンソースのデータベース向けプロキシソフトウェアです。「MariaDB」「MySQL」の性能向上に対して大きな効果を発揮します。アプリケーションとデータベースの分離を実現して、データベース管理プロセス作業を簡素化できます。

Neo4j(ネオフォージェイ)

  • データベース

Neo4j(ネオフォージェイ)。オープンソースNoSQL型グラフデータベースです。いくつかの基本的なデータ構造を理解し、SQLライク言語(Cypher)を覚えれば、グラフ理論に基づいたデータ処理機能を利用できます。

Node.js(ノードジェイエス)

  • APサーバ

Node.js(ノードジェイエス)。サーバサイドJavaScriptアプリケーションプラットフォームです。軽量高性能で、1万同時アクセス(C10K)問題に対応できる性能を持ち、JavaScriptでサーバサイド機能を実装できる点が特徴です。

GridDB(グリッドデービー)

  • データベース

GridDB(グリッドデービー)。ビッグデータ向けNoSQL型インメモリデータベースです。ミッションクリティカルなビッグデータアプリケーションに、スピードとスケールを提供します。

MariaDB(マリアディービー)

  • データベース

MariaDB(マリアディービー)。「MySQL」から派生したオープンソースリレーショナルデータベースシステムです。拡張性/処理性能/高品質が評価され、世界中で急速にシェアを拡大しており、Googleや数多くのLinuxディストリビューションでも、「MySQL」に代わって「MariaDB」が採用されています。

Corosync(コロシンク)

  • クラスタリング

Corosync(コロシンク)。高可用性クラスタ構成の中でクラスタ通信層制御を担当するオープンソースクラスタ基盤ソフトです。「Heartbeat」の後継として、クラスタ通信フレームワークを提供し、クラスタ構成サーバ間でノードの死活監視を行います。

Messasy(メザシ)

  • メールサーバ

Messasy(メザシ)。メールを保存しておくためのメールアーカイブソフトです。メールサーバを通過するすべてのメールを、規定のメールボックスとは別の領域に保存できます。

ILUKA(イルカ)

  • クラスタリング

ILUKA(イルカ)。Linux向け負荷分散機能「LVS(Linux Virtual Server)」と連携動作する「keepalived」の管理用ツールです。WebGUIを使って設定/管理を行えます。

SaMMA(サンマ)

  • メールサーバ

SaMMA(サンマ)。メール添付ファイルを自動的に安全化するソフトウェアです。「添付ファイル自動暗号化機能」と「添付ファイル自動削除機能」により、メールセキュリティを強化し、標的型メール対策が可能です。

Sympa(サンパ)

  • メールサーバ

Sympa (サンパ。SYstème de Multi-Postage Automatique) はメーリングリスト管理システムです。

Asterisk(アスタリスク)

  • IP-PBX

Asterisk(アスタリスク)は、オープンソースのIP-PBXソフトウェアです。

pgpool-II(ピージープールツー)

  • クラスタリング

pgpool-II(ピージープールツー)は、オープンソースのRDBMSであるPostgreSQLについて、冗長化(クラスター構成)や負荷分散を可能にするためのミドルウェアです。

postLDAPadmin(ポストエルダップアドミン)

  • メールサーバ

postLDAPadmin(ぽすとえるだっぷあどみん)は、メールサーバのアカウント情報を管理するためのウェブアプリケーションです。

Vyatta(ヴィアッタ)

  • ネットワーク系ツール

Vyatta(ヴィアッタ)。既製のx86サーバにインストールするだけでルータとして利用できる、高機能、高性能なオープンソースのソフトウェアルータ

Pacemaker(ペースメーカー)

  • クラスタリング

Pacemaker(ペースメーカー)。最も利用実績の多い「Heartbeat」後継のHAクラスタリング製品です。

Heartbeat(ハートビート)

  • クラスタリング

Heartbeat(ハートビート)。システム障害を検出した場合にバックアップシステムに切り替えて、サービスを継続させるためのシステムノード状態監視ミドルウェアです。

DRBD(ディーアールビーディー)

  • クラスタリング

DRBD(ディーアールビーディー)。Linuxプラットフォームにおいて、ネットワークを通じて、ハードディスクなどのストレージデバイスをリアルタイムに複製同期するエンタープライズ向けストレージソリューションです。

Dovecot(ダブコット)

  • メールサーバ

Dovecot(ダヴコット)。UNIX系やLinux系OS上で動作し、セキュアなシステムを意識した設計方針で開発されている、POP3とIMAPをサポートするメールサーバです。

Courier-IMAP(クーリエアイマップ)

  • メールサーバ

Courier-IMAP(クーリエアイマップ)。オープンソースのIMAPメールサーバソフトウェアです。

sendmail(センドメール)

  • メールサーバ

sendmail(センドメール)。UNIXで古くから使われてきたオープンソースのメールを送受信するためのサーバ用ソフトウェアです。メールサーバ用ソフトウェアの実質的標準の地位を占めています。

Postfix(ポストフィックス)

  • メールサーバ

Postfix(ポストフィックス)。フリーソフトウェア・オープンソースソフトウェアのメール転送エージェント

Samba(サンバ)

  • ドキュメント管理

Samba(サンバ)。UNIX系/Linux系コンピュータを、Windows互換のファイルサーバ/プリントサーバ/ドメインコントローラーとして使用するためのオープンソースソフトウェアです。

BIND(バインド)

  • DNS

BIND(バインド)は、世界で最も多く利用されているDNSサーバです。

Apache Axis(アパッチ アクシス)

  • SOAP

Apache Axis(アパッチ アクシス)。JavaとXML技術に基づいたWebサービスのフレームワーク

Apache Tomcat(アパッチトムキャット)

  • APサーバ

Apache Tomcat(アパッチトムキャット)。JavaサーブレットやJSP(JavaServer Pages)を処理するWebコンテナアプリケーションサーバ。

GlassFish(グラスフィッシュ)

  • APサーバ

GlassFish(グラスフィッシュ)。オープンソースのアプリケーションサーバ。サンによるJ2EE準拠のアプリケーションサーバ実装プロジェクトの名称

Apache Geronimo/WAS CE(アパッチ ジェロニモ/ワズ シーイー)

  • APサーバ

Apache Geronimo/WAS CE(アパッチ ジェロニモ/ワズ シーイー)。Apache Foundationが開発したJ2EEサーバ。

Squid(スクイッド)

  • プロキシサーバ

Squid(スクイッド)。インターネットなどのTCP/IPネットワークにおけるクライアント/サーバ間通信を中継するオープンソースハイパフォーマンスプロキシサーバソフトです。リバースプロキシやキャッシュサーバとしても利用できます。長い開発期間によって完成度/信頼度が高く、階層化キャッシュなどのWebアクセスを効率化するための機能が充実しています。

Nginx(エンジンエックス)

  • Webサーバ

Nginx(エンジンエックス)。処理性能・並行処理・メモリ使用量削減にフォーカスして開発され、高い処理能力などの理由により大規模サイトを中心に急速にシェアを拡大している、軽快なオープンソースWebサーバ/リバースプロキシです。

Apache HTTP Server(アパッチエイチティーティーサーバ)

  • Webサーバ

Apache HTTP Server(アパッチエイチティーティーサーバ)。世界中で高い人気を誇るWebサーバソフトウェア。

JBoss(ジェイボス)

  • APサーバ

JBoss(ジェイボス)。J2EE準拠アプリケーションサーバを中心としたWebアプリケーション開発フレームワークです。

PostgreSQL(ポストグレエスキューエル)

  • データベース

PostgreSQL(ポストグレエスキューエル)。商用製品と同等の機能/性能を誇る、オープンソースのオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。

MySQL Cluster(マイエスキューエルクラスター)

  • データベース

MySQL Cluster(マイエスキューエルクラスター)。MySQL Serverのストレージエンジンの1つ。負荷分散型・高可用性という特徴を持つリアルタイムデータベース

MongoDB(モンゴデービー)

  • データベース

MongoDB(モンゴデービー)。データを非定型のデータ構造の集合体としてJSON形式のデータで蓄える、NoSQL型ドキュメント指向データベース管理システムです。

MySQL(マイエスキューエル)

  • データベース

MySQL(マイエスキューエル)。高速性と堅牢性を追及したマルチユーザ・マルチスレッドのオープンソースリレーショナルデータベース管理システム(RDBMS)です。世界中で最もよく利用されており、Oracle社が開発を行っています。

バックナンバー

関連記事

7

  • オープソース書籍(サイド)

OSS×Cloud ACCESS RANKING

facebook

twitter