Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Qcontokyo2013_docdatabase_agile

275 views

Published on

  • Be the first to comment

  • Be the first to like this

Qcontokyo2013_docdatabase_agile

  1. 1. Copyright © 2013 atWare, Inc.ドキュメント型NoSQLによるAgileなモデリング開発北野 弘治, 河村 康爾atWare, Inc
  2. 2. Copyright © 2013 atWare, Inc.北野 Nick 弘治スピーカ紹介福井県生まれAgile, TDD, NoSQL, Server side Java, Android, AWS, LeanStartupロードレース, フルマラソン, 旅行横浜の会社「アットウェア」の福社長をしています。
  3. 3. Copyright © 2013 atWare, Inc.河村 Sebastian 康爾• Couchbase JP 発起人– https://groups.google.com/forum/?fromgroups#!forum/couchbase-jp• Couchbase, Inc. 認定– Couchbase Server トレーナー– Team 8091 メンバ• Cloudera認定 Hadoop 管理者・開発者• OSSを利用したシステム開発スピーカ紹介
  4. 4. Copyright © 2013 atWare, Inc.株式会社 アットウェアスピーカ紹介
  5. 5. Copyright © 2013 atWare, Inc.ドキュメント型NoSQLによるAgileなモデリング開発• ドキュメント型NoSQL?• プロジェクト: couchbase-todo– iteration 0, 1, 2, 3– アーキテクチャ解説– データモデリングプラクティス• まとめAgenda
  6. 6. Copyright © 2013 atWare, Inc.NoSQLへ移⾏する動機?ドキュメント型NoSQL?柔軟性の欠如/堅いスキーマ
  7. 7. Copyright © 2013 atWare, Inc.F1マシンをRDBMSに格納http://www.slideshare.net/Couchbase/opening-session-14492845ドキュメント型NoSQL?
  8. 8. Copyright © 2013 atWare, Inc.F1マシンをドキュメントデータベースに格納http://www.slideshare.net/Couchbase/opening-session-14492845ドキュメント型NoSQL?
  9. 9. Copyright © 2013 atWare, Inc.NoSQLカタログドキュメント型NoSQL?
  10. 10. Copyright © 2013 atWare, Inc.Couchbase Server?優れたスケーラビリティ 一貫したハイパフォーマンス24x365 常に利⽤可能 柔軟なデータモデル本日のテーマ
  11. 11. Copyright © 2013 atWare, Inc.ドキュメント型NoSQLによるAgileなモデリング開発- 開発履歴 -
  12. 12. Copyright © 2013 atWare, Inc.This slide is based on the template downloaded from “The Agile Warrior”.http://agilewarrior.wordpress.com/2011/02/06/blank-agile-inception-deck-template/The Agile Inception Deckcouchbase-todoiteration 0
  13. 13. Copyright © 2013 atWare, Inc.This slide is based on the template downloaded from “The Agile Warrior”.http://agilewarrior.wordpress.com/2011/02/06/blank-agile-inception-deck-template/couchbase-todosponsors: atWare, Inc.iteration 0
  14. 14. Copyright © 2013 atWare, Inc.This slide is based on the template downloaded from “The Agile Warrior”.http://agilewarrior.wordpress.com/2011/02/06/blank-agile-inception-deck-template/Why are we here?• QCon Tokyoで発表 #1• ドキュメントデータベースの普及 #2• 社内情報共有のソリューション #3業務で使える社内情報共有基盤iteration 0
  15. 15. Copyright © 2013 atWare, Inc.This slide is based on the template downloaded from “The Agile Warrior”.http://agilewarrior.wordpress.com/2011/02/06/blank-agile-inception-deck-template/The elevator pitch• 簡易なタスク管理、情報共有基盤• 容易な情報記⼊、モダンなUI• 要求の変化に柔軟に対応可能、高い拡張性• 適度に高度なドキュメントデータベースのサンプルアプリケーションiteration 0
  16. 16. Copyright © 2013 atWare, Inc.アーキテクチャクライアント: HTML, CSS, Javascriptサーバサイド: Javascriptデータベース: JSONドキュメントストア 全⽂検索エンジンiteration 0
  17. 17. Copyright © 2013 atWare, Inc.githubで公開https://github.com/ijokarumawak/couchbase-todoiteration 0
  18. 18. Copyright © 2013 atWare, Inc.iteration - 1プロダクトオーナ チームメンバセバスチャン、とりあえずMarkdownでメモを残せるようにしたいんだ。OK, ニック!
  19. 19. Copyright © 2013 atWare, Inc.iteration - 1
  20. 20. Copyright © 2013 atWare, Inc.doc.type == ‘project’iteration 1{ "type": "project","name": "プロジェクト1","desc": "プロジェクトの説明",“body”: “詳細な説明は**Markdown**で⼊⼒できる。" }DocumentID: P1各ドキュメントは”type”で型を定義
  21. 21. Copyright © 2013 atWare, Inc.doc.type == ‘task’iteration 1DocumentID: 0{ "type": "task","subject": "タスクの登録機能","desc": "新規のタスクを登録","startDate": "2013/04/05","endDate": "2013/04/05",“body”: “タスク内容の⼊⼒は**Markdown**で⾏えること。¥r¥n¥r¥nタスクドキュメントのIDはアトミックな整数カウンタを利用して発番している。" }
  22. 22. Copyright © 2013 atWare, Inc.Demo!iteration-1
  23. 23. Copyright © 2013 atWare, Inc.iteration - 2プロダクトオーナ チームメンバセバスチャン、タスクが山ほどあるんだ。プロジェクトごとに状況を把握したい。OK, ニック!タスクの進捗を分かりやすく表示してくれないか。
  24. 24. Copyright © 2013 atWare, Inc.iteration - 2
  25. 25. Copyright © 2013 atWare, Inc.doc.type == ‘task’iteration 2{"type": "task","project": "P1","subject": "タスク/プロジェクトの関連","status": "closed","desc": "トランザクションを意識しない関連の追加","startDate": "2013/04/08","endDate": "2013/04/08","body": "ドキュメントデータベースでは…"}タスクが所属するプロジェクトのIDステータス管理
  26. 26. Copyright © 2013 atWare, Inc.プロジェクト ⇒ タスクfunction (doc, meta) {if("task" === doc.type) {emit(doc.project, {subject: doc.subject,status: doc.status ? doc.status : open});}}iteration 2未設定時のデフォルトSQLのWHERE句に相当
  27. 27. Copyright © 2013 atWare, Inc.プロジェクトのサマリ表示• reduce()関数により– プロジェクト、ステータスごとのカウントを集計– かつ、プロジェクトの概要を同時に取得iteration 2
  28. 28. Copyright © 2013 atWare, Inc.Demo!iteration-2
  29. 29. Copyright © 2013 atWare, Inc.iteration - 3プロダクトオーナ チームメンバセバスチャン、Markdownの⼊⼒だけど、プレビュー機能があるといいな。OK, ニック!他のメンバとも共有できるようにユーザ管理機能もつけて欲しい。コメントで活発な議論をしたい。あと、簡単に情報を検索したいんだ。セバスチャン、できるか?
  30. 30. Copyright © 2013 atWare, Inc.iteration - 3
  31. 31. Copyright © 2013 atWare, Inc.doc.type == ‘user’{"type": "user","password": "password","createdAt": 1366558849178,"id": "kawamura"}iteration 3あくまで説明用本来はHash + SALT!
  32. 32. Copyright © 2013 atWare, Inc.doc.type == ‘comment’{"body": "コメントを追加。","task": 3,"by": "kawamura","type": "comment","createdAt": 1366559954099}iteration 3プロジェクト:タスクの関連と同様
  33. 33. Copyright © 2013 atWare, Inc.doc.type == ‘taskRev’DOCID: 5 {"type": "task","savedBy": "kawamura","project": "DOC","subject": "タスク変更履歴の記録","status": "closed","body": "タスク変更履歴では…。","rev": 1,"createdAt": 1366559737859,"updatedAt": 1366564407422,"revs": [{"rev": 0,"status": "open","savedBy": "kawamura","timestamp": 1366559737859} ]}DOCID: 5-0 {"type": "taskRev","savedBy": "kawamura","project": "DOC","subject": "タスク変更履歴の記録","status": "open","body": "タスク変更履歴ではコメントとは異なり、変更履歴のIDをタスク本体に内包している。タスクを変更した際にコピーを⽣成することで変更履歴を管理している。","rev": 0,"createdAt": 1366559737859}iteration 3
  34. 34. Copyright © 2013 atWare, Inc.全⽂検索iteration 3データベース: JSONドキュメントストア 全⽂検索エンジン
  35. 35. Copyright © 2013 atWare, Inc.Demo!iteration-3
  36. 36. Copyright © 2013 atWare, Inc.おさらいユーザtype: userpasswordなどコメントtype: commenttask: タスクIDプロジェクトtype: projectnameなど タスク履歴type: taskRevproject: プロジェクトIDstatus: open〜closerev: リビジョンIDタスクtype: taskproject: プロジェクトIDstatus: open〜closerevs: [0, 1, … n]
  37. 37. Copyright © 2013 atWare, Inc.まとめ• ドキュメントデータベース活用によって– 事前にスキーマを定義することなく、変化する要件に柔軟に対応することができる– データベースだけではダメで、アプリケーション側、UI部分も柔軟に拡張できる必要がある• 各ドキュメントをリッチにしていきたくなる– ⇒ 意欲的に開発できる!– ⇒ お客さん喜ぶ– ⇒ $$$!
  38. 38. Copyright © 2013 atWare, Inc.Questions?
  39. 39. Copyright © 2013 atWare, Inc.ご清聴ありがとうございました続きはブース、懇親会で!!トレーニング、コンサルも賜っております。

×