SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Spring Dataで始めるMongoDB

MongoDBのインストールと基本操作

Spring Dataで始めるMongoDB 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 注目のNoSQLデータベースであるMongoDBを利用したJavaアプリケーション開発を、Spring Dataというフレームワークを利用して行います。今回は事前知識として、MongoDB自体のインストールから基本操作について解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 NoSQLというキーワードが注目を集めてから数年たちます。NoSQLというものを簡単におさらいすると、NoSQLとはNot Only SQLの略語であり、データベースの形式としてこれまで大勢を占めて主流であったRDBMS(Relational DataBase Management System)に対抗する概念として登場しました。近年のデータ増やWebアプリケーションにおけるスケーラビリティの必要性から、従来のRDBMSでは構造的に適さないデータ構造のシステムやRDBMSが抱える問題を解決するものとして数多くのデータベースが登場しています。現在、NoSQLの大きな分類としては3種類にわけられています。

キー・バリュー型

 キーと値(バリュー)という比較的単純な構造のデータベース。代表的なものはRiak、Redis、Memcachedなど。

ドキュメント志向

 1件のデータをドキュメントと呼び、データ構造が自由でスキーマレスな構造のデータベース。代表的なものはMongoDB、CouchDB。

列志向

 キーに対して代表的なものはHBase、Cassandra。

 本連載ではこれらNoSQLと呼ばれるデータベースの中から、MongoDBを取り上げます。連載は2回にわけて行い、第1回では、MongoDBのインストールから、基本操作を通してMongoDB特有の概念やデータの扱い方を解説します。第2回では、JavaのアプリケーションフレームワークであるSpringのサブプロジェクトであるSpring Dataを使ってMongoDBを利用したアプリケーションの開発を解説します。

MongoDBとは

 MongoDBとは、アメリカの10gen社によって開発が行われている非常にスケーラブルで高性能なオープンソースのドキュメント指向データベースです。Windows/Linux/MacOS/Soralisの各種プラットフォーム向けのバイナリを配布している他、ライブラリもJava/Ruby/Python/PHPなど多くの言語に対応しています。

 MongoDBの特徴として、データがBSON(Binary JSON)という形式で保存されることです。BSONとはJSON(JavaScript Object Notation)ライクなドキュメントをバイナリ形式にシリアライズしたものであり、JSON同様に名前と値のペアの集まりによってデータを表現します。

 また、KVSとは異なってクエリを用いて非常に複雑なデータ検索も可能です。それ以外にもインデックスのサポートやレプリケーション、オートシャーディングといった非常に豊富な機能を備えてるNoSQLデータベースといえます。一方、MongoDBが備えていないものとして代表的ものはトランザクションです。またSQLのJOINのようなオペレーションも行えません。トランザクションは使えませんが、1ドキュメントに対するアトミックな処理はサポートされています。

 このような特徴を持つMongoDBですが、筆者の個人的な感想を言わせていただくと、KVSよりはなじみやすくRDBMSより柔軟といった感じで、非常に使い勝手がいいものだと思います。また、クエリなどの基本操作が非常に直感的であることから、初心者にも使いやすいだけでなくRDBMSの利用者からも移行がしやすいと思われます。

MongoDBのインストール

 では、早速MongoDBをインストールしていきたいと思います。MongoDBはインストールも非常に簡単です。先述したようにMongoDBはWindows/Linux/MacOS/Soralisをサポートしており、これらのプラットフォーム向けのバイナリが配布されています。また、yumやhomebrewなどの各種プラットフォームのパッケージ管理システム向けのパッケージも用意されています。今回は例として配布されているバイナリを利用したMac OS Xでの導入を紹介しますが、この方法の場合、どのプラットフォームでも手順は大きく変わりません。公式サイトのダウンロードページからお使いの環境にあわせてダウンロードしてください。

 ではまずは、ダウンロードサイトから任意のディレクトリにバイナリファイルをダウンロードして展開します。今回は記事執筆時点で最新の2.2.2を使っています。

$ wget http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.2.2.tgz
$ tar xvfz mongodb-osx-x86_64-2.2.2.tgz 
x mongodb-osx-x86_64-2.2.2/GNU-AGPL-3.0
x mongodb-osx-x86_64-2.2.2/README
x mongodb-osx-x86_64-2.2.2/THIRD-PARTY-NOTICES
x mongodb-osx-x86_64-2.2.2/bin/mongodump
x mongodb-osx-x86_64-2.2.2/bin/mongorestore
x mongodb-osx-x86_64-2.2.2/bin/mongoexport
x mongodb-osx-x86_64-2.2.2/bin/mongoimport
x mongodb-osx-x86_64-2.2.2/bin/mongostat
x mongodb-osx-x86_64-2.2.2/bin/mongotop
x mongodb-osx-x86_64-2.2.2/bin/mongooplog
x mongodb-osx-x86_64-2.2.2/bin/mongofiles
x mongodb-osx-x86_64-2.2.2/bin/bsondump
x mongodb-osx-x86_64-2.2.2/bin/mongoperf
x mongodb-osx-x86_64-2.2.2/bin/mongosniff
x mongodb-osx-x86_64-2.2.2/bin/mongod
x mongodb-osx-x86_64-2.2.2/bin/mongos
x mongodb-osx-x86_64-2.2.2/bin/mongo

 次にデータ用のディレクトリを作成します。MongoDBは、標準では/data/dbにデータを書き込みます。従って今回は/data/dbというディレクトリを作成します。なお、起動時のコマンドラインのオプションで--dbpathを指定すると、標準ディレクトリ以外をデータディレクトリとして利用できます。

$ mkdir -p /data/db

 インストールは以上です。では続いて起動してみましょう。起動に使用するコマンドはmongodです。同じディレクトリにはmongoというコマンドもありますので、間違いのないようにしましょう。

$ cd mongodb-osx-x86_64-2.2.2
$ ./bin/mongod

 起動が開始するとメッセージが表示され、最後に"waiting for connections on port 27017"というメッセージが表示されていれば起動は成功です。

 なお、この起動の仕方ではフォアグラウンドで起動されているため、ログアウトするとプロセスも停止します。デーモンとしてバックグラウンドで起動するには、mongodコマンドの実行時に--forkオプションをつけて実行してください。ただし、バックグラウンドで起動する場合は、あわせて"--logpath"もしくは"--syslog"オプションの指定が必要です。これらは、標準出力に出力されるログメッセージをファイルにロギングするためのオプションです。その他の細かいオプションは"mongod -h"で確認することができます。

 続いて、起動したMongoDBに対してMongoDBクライアントを使って接続してみます。MongoDBクライアントは対話型のシェルとなっており、mongodと同じディレクトリにあるmongoコマンドで起動します。

$ ./bin/mongo
MongoDB shell version: 2.2.2
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
> 

 MongoDBクライアントの実行時に何もオプションを指定しない場合は、自動的にローカルのMongoDB(localhostの27017ポート)のtestというデータベースに接続されます。なお、このツールはJavaScriptのシェルで、MongoDBのコマンドを実行できるだけでなくJavaScriptの実行が可能となっています。本記事では以降、MongoDBクライアントのことは単にシェルと呼びます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
MongoDBの基本概念

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Spring Dataで始めるMongoDB連載記事一覧
この記事の著者

西谷 圭介(ニシタニ ケイスケ)

TIS株式会社所属。金融系基幹システムの開発等に従事したのち、サービス企画・開発を担当。IaaS開発を経て、現在はアプリ開発者のためのPaaS「eXcale」の開発責任者兼プログラマとして活動中。Tw...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6982 2013/02/07 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  2. 2
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  1. 6
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  2. 7
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  3. 8
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感
  4. 9
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!
  5. 10
    「イテレータ」 ~マンガでプログラミング用語解説

アクセスランキング

  1. 1
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  2. 2
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  7. 7
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  8. 8
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感
  9. 9
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!
  10. 10
    「イテレータ」 ~マンガでプログラミング用語解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  7. 7
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  8. 8
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  9. 9
    Google、社内AIエージェント「Google Agentspace」発表
  10. 10
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  2. 2
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  1. 6
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  2. 7
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  3. 8
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感
  4. 9
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!
  5. 10
    「イテレータ」 ~マンガでプログラミング用語解説

アクセスランキング

  1. 1
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  2. 2
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    Google、社内AIエージェント「Google Agentspace」発表
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース
  7. 7
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  8. 8
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感
  9. 9
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!
  10. 10
    「イテレータ」 ~マンガでプログラミング用語解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  7. 7
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  8. 8
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  9. 9
    Google、社内AIエージェント「Google Agentspace」発表
  10. 10
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略