ザ・ドキュメント~うまくいかないNoSQL~

38,018
-1

Published on

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

No Downloads
Views
Total Views
38,018
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
1
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide
  • 運用をしていった中での考え方、実施したことをデータストア / 画像ストレージにフォーカスしてお話します
  • 運用をしていった中での考え方、実施したことをデータストア / 画像ストレージにフォーカスしてお話します
  • ザ・ドキュメント~うまくいかないNoSQL~

    1. 1. ザ・ノンフィクション ~うまくいかない NoSQL ~ 株式会社サイバーエージェント アメーバ事業本部プラットフォームディビジョン システムディベロップメントグループ CA Developers Connect                       桑野 章弘
    2. 2. <ul><li>桑野章弘 </li></ul><ul><ul><li>インフラエンジニア </li></ul></ul><ul><ul><ul><li>アメーバピグの運用/構築を担当 </li></ul></ul></ul><ul><ul><ul><li>ピグライフの運用/構築を担当 </li></ul></ul></ul><ul><ul><li>Twitter </li></ul></ul><ul><ul><ul><li>http:// twitter.com/kuwa_tw </li></ul></ul></ul><ul><ul><li>Blog </li></ul></ul><ul><ul><ul><li>http:// d.hatena.ne.jp/akuwano / </li></ul></ul></ul><ul><ul><li>著書/活動 </li></ul></ul><ul><ul><ul><li>「 MySQL によるタフなサイトの作り方」 </li></ul></ul></ul><ul><ul><ul><li>勉強会( hbstudy, qpstudy ほか)などでの発表など </li></ul></ul></ul>自己紹介
    3. 3. おらが村
    4. 4. に NoSQL がやってきた <ul><li>ピグライフのアーキテクチャ </li></ul><ul><li>アプリケーション </li></ul><ul><ul><li>Node.js </li></ul></ul><ul><ul><li>websocket </li></ul></ul><ul><li>データストア </li></ul><ul><ul><li>mongoDB </li></ul></ul>めちゃめちゃとんがっている、、、
    5. 5. に NoSQL がやってきた <ul><li>ピグライフのアーキテクチャ </li></ul><ul><li>アプリケーション </li></ul><ul><ul><li>Node.js </li></ul></ul><ul><ul><li>websocket </li></ul></ul><ul><li>データストア </li></ul><ul><ul><li>mongoDB </li></ul></ul>でも、、、
    6. 6. みんな(心)の声 NoSQL なら なんでもできる。
    7. 7. みんな(心)の声 NoSQL のすごさをみてみたい。
    8. 8. みんな(心)の声 こんなの MySQL みたいなもんでしょ。
    9. 9. 、、、とおもってませんけど <ul><li>用途からはシャーディングの手間のない DB くらいで思ってました。 </li></ul><ul><li>これから 2 つの代表的なお話をさせていただきます、、、。 </li></ul>
    10. 10. その1 ・・・ useしたらできるDB <ul><li>MySQL みたいに Create すればいいんでしょー、、、あれないわ。 </li></ul>[kuwano_akihiro@mongo01 ~]$ /usr/local/mongodb/bin/mongo --port 27018 MongoDB shell version: 1.8.1 connecting to: 127.0.0.1:27018/test >show dbs            ← database の確認 admin (empty) local (empty) testdatabase 0.453125GB
    11. 11. その1・・・useしたらできるDB <ul><li>あれ、、、 create ないぞ、、、ないけど入れたぞ、、、。 </li></ul>[kuwano_akihiro@mongo01 ~]$ /usr/local/mongodb/bin/mongo --port 27018 MongoDB shell version: 1.8.1 connecting to: 127.0.0.1:27018/test > use newdatabase switched to db newdatabase ← なんか入れた > db.test.insert( { test:1 }) ← データのインサートしちゃった
    12. 12. その1 ・・・ useしたらできるDB <ul><li>まさか、、、。 </li></ul><ul><li>[kuwano_akihiro@mongo01 ~]$ /usr/local/mongodb/bin/mongo --port 27018 </li></ul><ul><li>MongoDB shell version: 1.8.1 </li></ul><ul><li>connecting to: 127.0.0.1:27018/test </li></ul><ul><li>>> db.test.insert( { test:1 }) ← データのインサート </li></ul><ul><li>show dbs </li></ul><ul><li>admin (empty) </li></ul><ul><li>local (empty) </li></ul><ul><li>newdatabase 0.203125GB            ←なんかできてる </li></ul><ul><li>testdatabase 0.453125GB </li></ul>
    13. 13. その1 ・・・ useしたらできるDB <ul><li>もちろんデータベース名間違えてインサートしてもエラーなんか出ません! </li></ul><ul><li>そんなもんは NoSQL には必要ない!、、、んでしょうか、、、。 </li></ul>
    14. 14. その2 ・・・ 勝手に同期するDB <ul><li>冗長化のためにレプリカセットを組みましょう </li></ul># /usr/local/mongodb/bin/mongo --host mongo01 replSetTest001:PRIMARY> rs.status() { &quot;set&quot; : &quot;replSetTest001&quot;, ( snip) { &quot;_id&quot; : 2, &quot;name&quot; : &quot;mongo03:27017&quot;, &quot;health&quot; : 1, &quot;state&quot; : 1, &quot;stateStr&quot; : &quot;PRIMARY&quot;, &quot;optime&quot; : { &quot;t&quot; : 1305112310000, &quot;i&quot; : 7 }, &quot;optimeDate&quot; : ISODate(&quot;2011-05-11T11:11:50Z&quot;), &quot;self&quot; : true } ( snip)
    15. 15. その2 ・・・ 勝手に同期するDB <ul><li>あ、1台落ちちゃった! </li></ul><ul><li>壊れちゃったからまっさらに作り直し </li></ul># /usr/local/mongodb/bin/mongo --host mongo01 replSetTest001:PRIMARY> rs.status() { &quot;set&quot; : &quot;replSetTest001&quot;, ( snip) { &quot;_id&quot; : 2, &quot;name&quot; : &quot;mongo03:27017&quot;, &quot;health&quot; : 0, &quot;state&quot; : 1, &quot;stateStr&quot; : &quot;PRIMARY&quot;, &quot;optime&quot; : { &quot;t&quot; : 1305112310000, &quot;i&quot; : 7 }, &quot;optimeDate&quot; : ISODate(&quot;2011-05-11T11:11:50Z&quot;), &quot;self&quot; : true } ( snip)
    16. 16. その2 ・・・ 勝手に同期するDB <ul><li>作り直したから、 mongodb 立ち上げるよ </li></ul># /etc/init.d/mongod start # /usr/local/mongodb/bin/mongo --host mongo01 >show dbs admin (empty) local (empty) newdatabase 0.203125GB            ←なんかできてる testdatabase 0.453125GB > use newdatabase switched to db newdatabase > db.test.find() { “_id” : ObjectId(“4dca6862374b6d50c727b8e7”), “test” : 1 } ← まだなんもしてない
    17. 17. その2 ・・・ useしたらできるDB <ul><li>もちろん大量のデータがあっても手加減なんてしてくれませんw </li></ul><ul><li>そんなもんは NoSQL には必要ない!、、、んでしょうか、、、。 </li></ul>
    18. 18. でも、、、 <ul><li>ほかにも </li></ul><ul><ul><li>チャンクが移動しまくりだったり </li></ul></ul><ul><ul><li>デフォルトチャンクサイズが大きかったり </li></ul></ul><ul><ul><li>メモリの状態がわかりづらかったり </li></ul></ul><ul><ul><li>勝手が違う、、、 </li></ul></ul>Mongodb 勝手が違う、、、 y 倍
    19. 19. でも、、、 <ul><li>いろんな事を自動でやってくれる </li></ul><ul><ul><li>レプリカ復旧 </li></ul></ul><ul><ul><li>シャーディング </li></ul></ul><ul><ul><li>生死判別と冗長化 </li></ul></ul><ul><ul><li>負荷分散 </li></ul></ul><ul><li>アプライアンス機器を使うイメージに近い </li></ul><ul><ul><li>でもオープンソースだから中みれるよね </li></ul></ul>Mongodb 萌えかもしれない、、、
    20. 20. というわけで <ul><li>mongodb としばらく付き合ってみたいと思います。続報はいろんなところでw </li></ul>
    21. 21. というわけで <ul><li>ご清聴ありがとうございました! </li></ul>むにゃむにゃ、、、 またシャードが偏った、、、直さないと、、、

    ×