Your SlideShare is downloading. ×
Amazon DynamoDB 初心者が理解した事
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Amazon DynamoDB 初心者が理解した事

1,156

Published on

2014-03-14 (金) JAWS DAYS 2014 前夜祭!! JAWS-UG 奥の細道 in 仙台で発表

2014-03-14 (金) JAWS DAYS 2014 前夜祭!! JAWS-UG 奥の細道 in 仙台で発表

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,156
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
10
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Amazon DynamoDB 初心者が理解した事 間違ってたら教えて下さい JAWS-UG会津 德納
  • 2. 自己紹介 ● 德納 弘和 (とくのう ひろかず) ● 某社の工場のITシステム部門 ● 39才にして IT部門へ移動して4年目 – 遅れを取り戻すべく日夜勉強中 ● 少し覚えた言語 – VBA, SQL, JavaScript, Java, Perl, Shell... ● コードを極力書かないのがお気に入り – Pentaho ETL, Oracle APEX, Mojolicious
  • 3. 2013年の学びと挑戦 ● ユニケージ開発手法 ● Perl, Mojolicious ● Jenkins ● 自動テスト jUnit, Mockito, shUnit2 ● Twitter Bootstrap, Google Maps APIなど ● 勉強会の楽しさ! – エフスタ! – オープンデータカフェ会津 – JAWS-UG会津 ● CODE for AIZU参加
  • 4. 2014年の学びと挑戦 ● LODチャレンジ応募 ● Hack for Town in Aizu参加 ● Meteor(Node.js, MongoDB) on Nitrous.IO ● GitHubデビュ〜 ● Amazon DynamoDB 今ここ
  • 5. クラウド素人です
  • 6. アカウントを作ったのは7日前
  • 7. DynamoDBって何? ● Fully Managed NoSQL Database Service
  • 8. DynamoDBって何? ● Fully Managed NoSQL Database Service なんのこっちゃ?
  • 9. DynamoDBって何? ● Fully Managed NoSQL Database Service – NoSQL – Fully Managed Database Service 分けて考えよう
  • 10. NoSQLの理解 ● Not only SQL ● 巨大なデータの読み込み速度を上げる – データ整合性を諦める ● 柔軟なデータ構造 (DynamoDB他一部のみ) – レコード毎に持つデータを変えられる ● 集計とか検索は得意ではない
  • 11. Fully Managed DB Service ● サーバーの様にデータベースを借りられる – 読み書き速度、保存容量、転送量に課金 ● 管理は全てAmazonにお任せ – インストール、アップグレード、パッチ – 保存容量確保 : 上限無し! – パフォーマンス調整 – 3カ所に分散保存
  • 12. 簡単に言うと ● 面倒な事はAmazonにお任せ! ● パフォーマンスはSSDでバカっぱや! ● それでも不満なら金で解決! ● 容量の増加を気にしなくて良い! ● 3カ所に分散保管で信頼性抜群! ● 普通のDBと得意分野が違うので気を付けろ!
  • 13. 取り敢えず使ってみよう ● Service - DynamoDB
  • 14. テーブル作成 ● Create Table
  • 15. テーブル設定 ● Primary Key(主キー) – Hashだけ、又はHashとRangeの組み合わせ
  • 16. Primary Key ● Hash Key : データ分散用の項目 – UserIDなどデータが集中しない項目を選ぶ – Game IDや年月など集中する項目を避ける ● Range Key : – 範囲検索用の項目 ● この2項目で一意になるよう詰め込む
  • 17. Primary Keyの例 ● フォーラムを3つのテーブルで表す Table Primary Key Attributes Hash Range Group JAWS-UG奥の 細道 { LastPostBy="Kurihara" LastPostDateTime= "2012-01- 03T00:40:57.165Z" } Thread JAWS-UG奥の 細道 内容について { Message = "アンカンファレンスをしては?" Tags = [ "JAWS-UG", "東北" ] LastPostDateTime = "2012-01- 03T00:40:57.165Z" } Reply JAWS-UG奥の 細道#内容につ いて 2011-12- 11T00:40:57. 165Z { Message = "エクストリーム!" PostedBy = "Kurihara" }
  • 18. 項目名 Attributes ● Hash, Range以外の中身 ● データ毎にAttributesが変わっても良い ● 型 – String – Number – Binary – String Set (配列) – Number Set (配列) – Binary Set (配列) 日付などは文字列に変換
  • 19. Index作成 ● オプションなので何も設定しなくても良い
  • 20. Index ● テーブル当り検索用に各5項目を設定出来る – 裏では同期するHash-Rangeテーブルを作成 – 書き込み、保存コストが発生 ● 作成時のみ設定可能。 追加、変更出来ない。 ● Local secondary index – Hash Keyはテーブルと同じ項目、Range Key は別項目でHash-Rangeテーブルを作成 ● Global secondary index – HashもRangeもテーブルとは別項目でHas- Rangeテーブルを作成
  • 21. Index ● こんな風に動いているらしい Hash Range Attribute1 Attribute2 A 1 あ い B 2 う え Hash Attribute2 Attribute1 Range A い あ 1 B え う 2 Primary Key Primary Key Index
  • 22. 性能設定 ● Read Capacity Unit – 4KBのアイテムを1個/秒で読み込める ● Write Capacity Unit – 1KBのアイテムを1個/秒で書き込める
  • 23. 警告の設定 ● 設定した性能の75~95%を超えた場合にメール 通知を出せる
  • 24. 最後に確認 ● お約束 ¥60/月
  • 25. 出来上がり! ● 3つ作ってみました。
  • 26. 欠点 ● Indexの修正が出来ない – 変えたくなると作り替え – 大量にデータを移すにはコストが発生 ● ERD的な書類との同期の仕組みが無い (多分) ● 向き、不向きがある – Primary Key, Index以外を検索するには全件 検索するしかない – 一貫性のあるTransactionはRDBを使うか JavaのTransaction Libraryを使う必要がある – RDBと併用が推奨されているが複雑化
  • 27. コンソール以外からも! ● 公式SDK達 ● 非公式もPerlなどたくさん Android Browser iOS Java .NET Node.js Python PHP Ruby
  • 28. SDKに用意されているAPI ● Table操作 – CreateTable – DeleteTable – DescribeTable – ListTables – UpdateTable ● バッチ処理 – BatchGetItem – BatchWriteItem ● Item操作 – PutItem – GetItem – UpdateItem – DeleteItem ● 検索 – Query : Primary or Index – Scan : 総なめ
  • 29. あそんでみよう!
  • 30. NoSQLと言えばビッグデータ
  • 31. ビッグデータと言えば Twitter解析
  • 32. 気になる疑問を 徹底検証!
  • 33. 調べる事は、、、
  • 34. 自主規制
  • 35. 仕方ないので
  • 36. WebSockで掲示板
  • 37. 多くの例があって面白く無い
  • 38. RESTfull APIを作ってみよう!
  • 39. こんな感じ DynamoDBNitrous.IOWeb Client ● 全部ただ
  • 40. RESTfull API ● 簡単なものだけ実装しました – BatchGetItemとBatchWriteItemは未実装 操作 Function Method URL例 Create putItem POST /Group/Hash?p=1&q=A Read scan getItem GET /Groups /Groups/Hash Update updateItem PUT /Group/Hash?p=A&q=1 Delete deleteItem DELETE /Group/Hash
  • 41. Create by POST ● curl -i -X POST -H "Content-Type: application/json" -d '{"datetime":"2013-03- 13T23:27:32.256Z" , "by":"とくのう"}' http://your_host:8080/Group/JAWS-UG
  • 42. Read all by GET ● curl -H "Content-Type: application/json" http://your_host:8080/Groups
  • 43. Read by GET ● curl -H "Content-Type: application/json" http://your_host:8080/Group/JAWS-UG奥の細 道 日本語はURIエンコードしましょう
  • 44. Update by PUT ● curl -i -X PUT -H "Content-Type: application/json" -d '{"datetime":"2021-03- 14T00:04:01.951Z" , "by":"連れて行って貰った 事ありません"}' http://your_host:8080/Group/JAWS-UG
  • 45. Delete by DELETE ● curl -i -X DELETE http://your_host:8080/Group/JAWS-UG
  • 46. もう一捻り欲しい
  • 47. こんな感じ DynamoDBNitrous.IOPentaho ETL ● これも全部無料
  • 48. データ処理ならPentaho ● でもDynamoDBの速度制限で早く無い ● 早くしたいなら金を出す Group LastPostDateTime LastPostBy あ 2013-03-13T23:27:32.256Z とくのう い 2013-03-13T23:27:32.256Z とくのう う 2013-03-13T23:27:32.256Z とくのう え 2013-03-13T23:27:32.256Z とくのう お 2013-03-13T23:27:32.256Z とくのう か 2013-03-13T23:27:32.256Z とくのう き 2013-03-13T23:27:32.256Z とくのう く 2013-03-13T23:27:32.256Z とくのう け 2013-03-13T23:27:32.256Z とくのう こ 2013-03-13T23:27:32.256Z とくのう あ1 2013-03-13T23:27:32.256Z とくのう い1 2013-03-13T23:27:32.256Z とくのう う1 2013-03-13T23:27:32.256Z とくのう え1 2013-03-13T23:27:32.256Z とくのう お1 2013-03-13T23:27:32.256Z とくのう か1 2013-03-13T23:27:32.256Z とくのう き1 2013-03-13T23:27:32.256Z とくのう
  • 49. まとめ ● 管理は全てAmazonにお任せで楽! ● 外部キーが無いがアプリ側で実装しているのが 実態らしい – けっこう面倒 ● Indexの追加、削除が出来ないのは痛い ● 柔軟に検索出来ない。 1MB毎に再検索とか ● 実体とドキュメントを同期させる方法が欲しい ● 使い捨てと巨大なデータを持つシステムだけが 美味しい使い方?
  • 50. ご清聴ありがとうございました
  • 51. 実績 ● 2014.03.08 アカウント作成 ● 2014.03.11 Hack for Town 3年の 2014.03.11 クロスオーバー振り返り参加 ● 2014.03.12 Game Lab成果発表会参加 ● 2014.03.13 RESTfull 開発、Pentahoで遊ぶ ● 2014.03.14 発表
  • 52. Appendix
  • 53. Region ● ここで使っているRegionを見つけた。 – http://docs.aws.amazon.com/general/latest/gr/rande.html
  • 54. Credentialsの確認方法
  • 55. IAM
  • 56. Create a New Group of Users
  • 57. Group名
  • 58. Permissions ● 全部出来るPower User Accessを選択
  • 59. Policy確認 ● だから何って感じだけど見さされる
  • 60. Create User
  • 61. Userの確認
  • 62. Credentials ● やっと確認

×