0
JavaでMongoDB                    船戸 隆                       2011/02/252011年2月28日月曜日
アジェンダ2011年2月28日月曜日
アジェンダ                MongoDBの特徴                  データ構造                MongoDBを操るには?                  接続                  操...
MongoDBの特徴2011年2月28日月曜日
MongoDBの特徴                MongoDBはドキュメント指向データベース                  データの格納方法がオブジェクト指向的                  基本JSONの形(BSON)      ...
ドキュメント指向                データベースとは?2011年2月28日月曜日
RDBでは                それぞれのテーブルの関係を                リレーションで表す                SQLを使う                OneToManyの表現がしずらい        ...
ドキュメント         指向DBでは                レコードの単位がドキュメント                JOINしない。内包する。                事前に構造を決める必要がない            ...
MongoDBの特徴                高性能                 読み書きが高速                 高可用性(マスタ、スレイブ自動切り替え)                 容易なスケーラビリティ(シャー...
MongoDBの特徴                C++で書かれてる                   Boost使ってる                GridFS                   分散ファイルシステム        ...
用 語2011年2月28日月曜日
RDB   MongoDB                レコード   ドキュメント                カラム    エレメント                テーブル   コレクション2011年2月28日月曜日
実際に操作2011年2月28日月曜日
どのようにアクセスするか?                Javaの場合java-driverを使用してアクセス                する。もちろんJavaで書かれている。                  Maven2のリポジトリに...
接続方法                    接続サンプル                        JDBCの接続文字列のような感じ                      MongoURI uri = new MongoURI("m...
コレクションを取得                    DBを取得して、さらにコレクションを取得                        RDBで言うところのテーブルを取得                        コレクションに対...
コレクションに対する操作                追加                更新                削除                検索2011年2月28日月曜日
追加                DBObjectに対して値を追加                        Mapのような感じ                        どんどん入れ子にできる                    ...
追加                    コレクションに追加                        あとはよろしくやってくれる                        MongoDBが内部使うユニークなキー(UUID)を    ...
更新                    クエリを使って更新をかける                      DBCollection col = db.getCollection("daimyou");                  ...
削除                    取得したドキュメントを渡して削除                      DB db = getDB();                      DBCollection col = db.ge...
検索                                               <, <=, >, >=                                               $all          ...
検索                    or条件                      // 条件付き取得                      // or 条件                      // territory ...
検索                大小                       // age > 45                       query = new BasicDBObject();                 ...
検索                IN条件                      // weight in (40, 50, 60)                      query = new BasicDBObject();   ...
検索                    配列のマッチ              // 配列のマッチ。三河国、美濃国、出雲国をすべて要素にもつもの。              query = new BasicDBObject();     ...
検索                    要素の数                      // territoryの要素の数が3つのもの                      query = new BasicDBObject(); ...
検索                DISTINCT                      // 名前でdistinct                      List distinct = col.distinct("name"); ...
検索                その他                 オフセット検索                 Count                 Sort                 グルーピング           ...
最後に                OR/Mappingフレームワーク                  Morphia                今のところ銀の弾丸に近いところまで                RDB置き換わる可能性2...
ありがとうございました2011年2月28日月曜日
Upcoming SlideShare
Loading in...5
×

Javaでmongo db

2,612

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,612
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Javaでmongo db"

  1. 1. JavaでMongoDB 船戸 隆 2011/02/252011年2月28日月曜日
  2. 2. アジェンダ2011年2月28日月曜日
  3. 3. アジェンダ MongoDBの特徴 データ構造 MongoDBを操るには? 接続 操作2011年2月28日月曜日
  4. 4. MongoDBの特徴2011年2月28日月曜日
  5. 5. MongoDBの特徴 MongoDBはドキュメント指向データベース データの格納方法がオブジェクト指向的 基本JSONの形(BSON) マッピングのコストが低い JOINの必要がない。というかできない。2011年2月28日月曜日
  6. 6. ドキュメント指向 データベースとは?2011年2月28日月曜日
  7. 7. RDBでは それぞれのテーブルの関係を リレーションで表す SQLを使う OneToManyの表現がしずらい 1+N問題 オブジェクト指向言語と相性 がよくない2011年2月28日月曜日
  8. 8. ドキュメント 指向DBでは レコードの単位がドキュメント JOINしない。内包する。 事前に構造を決める必要がない (スキーマレス) オブジェクト指向的構造にマッ チしやすい2011年2月28日月曜日
  9. 9. MongoDBの特徴 高性能 読み書きが高速 高可用性(マスタ、スレイブ自動切り替え) 容易なスケーラビリティ(シャーディング) 高機能なクエリ2011年2月28日月曜日
  10. 10. MongoDBの特徴 C++で書かれてる Boost使ってる GridFS 分散ファイルシステム Map/Reduce 商用サポート http://www.10gen.com/support2011年2月28日月曜日
  11. 11. 用 語2011年2月28日月曜日
  12. 12. RDB MongoDB レコード ドキュメント カラム エレメント テーブル コレクション2011年2月28日月曜日
  13. 13. 実際に操作2011年2月28日月曜日
  14. 14. どのようにアクセスするか? Javaの場合java-driverを使用してアクセス する。もちろんJavaで書かれている。 Maven2のリポジトリに登録されている その他にもC、C#、C++、.NET、 ColdFusion、Erlang、PHP、Javascript など2011年2月28日月曜日
  15. 15. 接続方法 接続サンプル JDBCの接続文字列のような感じ MongoURI uri = new MongoURI("mongodb://192.168.128.3 "); Mongo mongo = new Mongo(uri); DB db = mongo.getDB("sengoku"); DBが存在しない場合は自動で作成される2011年2月28日月曜日
  16. 16. コレクションを取得 DBを取得して、さらにコレクションを取得 RDBで言うところのテーブルを取得 コレクションに対して操作を行う DB db = getDB(); // コレクションがなければコレクションを新規作成 DBCollection collection = db.getCollection("daimyou");2011年2月28日月曜日
  17. 17. コレクションに対する操作 追加 更新 削除 検索2011年2月28日月曜日
  18. 18. 追加 DBObjectに対して値を追加 Mapのような感じ どんどん入れ子にできる DBObject dbObject = new BasicDBObject(); dbObject.put("name", “あいうえお”); dbObject.put("sex", "male"); dbObject.put("age", 35); dbObject.put("height", 170); dbObject.put("weight", 61); dbObject.put("list", new ArrayList<String>()); dbObject.put("list", new HashMap<String, String>());2011年2月28日月曜日
  19. 19. 追加 コレクションに追加 あとはよろしくやってくれる MongoDBが内部使うユニークなキー(UUID)を 自動で振ってくれる DBCollection collection = db.getCollection("daimyou"); collection.insert(dbObject);2011年2月28日月曜日
  20. 20. 更新 クエリを使って更新をかける DBCollection col = db.getCollection("daimyou"); DBObject dbobject = col.findOne(); String name = (String)dbobject.get("name"); System.out.println(dbobject); System.out.println(name); dbobject.put("name", "あいうえお"); DBObject query = BasicDBObjectBuilder.start() .add("_id", dbobject.get("_id")).get(); WriteResult update = col.update(query, dbobject);2011年2月28日月曜日
  21. 21. 削除 取得したドキュメントを渡して削除 DB db = getDB(); DBCollection col = db.getCollection("daimyou"); // 全件取得 DBCursor cursor = col.find(); while (cursor.hasNext()) { col.remove(cursor.next()); }2011年2月28日月曜日
  22. 22. 検索 <, <=, >, >= $all $exists 演算子 $mod $ne 様々な演算子 $in $nin $nor 検索条件もDBObject $or new BasicDBObject("$all", 値) $size $type 正規表現 ...2011年2月28日月曜日
  23. 23. 検索 or条件 // 条件付き取得 // or 条件 // territory = 美濃国 or territory = 飛騨国 BasicDBObject query = new BasicDBObject(); query.put("territory", "美濃国"); query.put("territory", "飛騨国"); System.out.println(query); DBCursor cursor = col.find(query); while (cursor.hasNext()) { System.out.println(cursor.next()); }2011年2月28日月曜日
  24. 24. 検索 大小 // age > 45 query = new BasicDBObject(); query.put("age", new BasicDBObject("$gt", 45)); System.out.println(query); cursor = col.find(query); while (cursor.hasNext()) { System.out.println(cursor.next()); }2011年2月28日月曜日
  25. 25. 検索 IN条件 // weight in (40, 50, 60) query = new BasicDBObject(); query.put("weight", new BasicDBObject("$in", new Integer[] { 40, 50, 60 })); System.out.println(query); cursor = col.find(query); while (cursor.hasNext()) { System.out.println(cursor.next()); }2011年2月28日月曜日
  26. 26. 検索 配列のマッチ // 配列のマッチ。三河国、美濃国、出雲国をすべて要素にもつもの。 query = new BasicDBObject(); query.put("territory", new BasicDBObject("$all", new String[] { "三河国", "美濃国", "出雲国" })); System.out.println(query); cursor = col.find(query); while (cursor.hasNext()) { System.out.println(cursor.next()); }2011年2月28日月曜日
  27. 27. 検索 要素の数 // territoryの要素の数が3つのもの query = new BasicDBObject(); query.put("territory", new BasicDBObject("$size", 3)); System.out.println(query); cursor = col.find(query); while (cursor.hasNext()) { System.out.println(cursor.next()); }2011年2月28日月曜日
  28. 28. 検索 DISTINCT // 名前でdistinct List distinct = col.distinct("name"); for (Object obj : distinct) { System.out.println(obj); }2011年2月28日月曜日
  29. 29. 検索 その他 オフセット検索 Count Sort グルーピング Map/Reduce2011年2月28日月曜日
  30. 30. 最後に OR/Mappingフレームワーク Morphia 今のところ銀の弾丸に近いところまで RDB置き換わる可能性2011年2月28日月曜日
  31. 31. ありがとうございました2011年2月28日月曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×