記事
-
GitHubにAIプログラミング機能「Copilot」登場 関数名とコメントから中身を丸ごと自動補完
- ついにここまで来ましたか… 要件定義のできない、ただひたすらコードを書くだけのエンジニアは淘汰されると前から言われては来ましたが、実際にプロダクトとして現実味を帯びてきたなぁ
ちなみにTwitterではこんな画像がバズる始末
調べた
シャーディングって何?
- 水平分割とも呼ばれる
- 同じテーブルを複数のDBに用意して、各DB内に保存されるレコードの量を減らす方法
- シャーディングとは、テーブルシャーディングという可能性【水平分割】
GridFSって何?
- MongoDBに16Mバイト以上のファイルを保存したい場合に使うインターフェース
- MongoDBでゆるふわDB体験 - 第7回 GridFS─大容量のファイルをMongoDBに保存する仕組み
MongoDBについて
- 皆さんおなじみNoSQLのドキュメント思考データベース
- NoSQLなので、SQLは使用できない。クエリはJavaScriptで行う
-
バックアップの方法は2種類
- データファイルをコピーする
- mongodumpを利用する
- やってみようNoSQL MongoDBを最速で理解する
Cloud9って何?
-
ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境
- コードエディタ、デバッガー、ターミナルが含まれている
-
使ってみた感じ、EC2の上で動かせるので、VPCとかセキュリティグループとかうまいことやれば、DocumentDBへの接続とかはすごい簡単にできた
- しかも環境の共有もできるので、他の人にすぐに使ってもらえる
- AWS Cloud9 を活用したら、個人開発が捗った話
DocumentDBいじってみた
AWSの公式のチュートリアルに基づいてやってみた(Cloud9のCLIでDocumentDBを動かす感じ)
コマンド関係はQiitaの記事も参照した
基本的にInsertは次の形
// db.(コレクション名).insert(json)っていう形でデータを投入する
db.collection.insert({"hello":"DocumentDB"})
db.testcoll.insert( { "key1" : "value1", "key2" : "value2" } )
Selectは次の形
db.collection.findOne()
// { "_id" : ObjectId("5e401fe56056fda7321fbd67"), "hello" : "DocumentDB" }
db.testcoll.find()
// { "_id" : ObjectId("5c6198f6fb5e83ffaa3ba044"), "key1" : "value1", "key2" : "value2" }
コレクション名に対して参照するんやな
idを指定せずにinsertしたものに関しては、getの時にはidはユニークなオブジェクトIDが振られるっぽい
複数突っ込む場合はこんな感じ
db.profiles.insertMany([
{ "_id" : 1, "name" : "Tim", "status": "active", "level": 12, "score":202},
{ "_id" : 2, "name" : "Justin", "status": "inactive", "level": 2, "score":9},
{ "_id" : 3, "name" : "Beth", "status": "active", "level": 7, "score":87},
{ "_id" : 4, "name" : "Jesse", "status": "active", "level": 3, "score":27}
])
idを指定してあげると、selectしてあげた時もidで引っ張ってこれる
db.profiles.find()
// { "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 202 }
// { "_id" : 2, "name" : "Justin", "status" : "inactive", "level" : 2, "score" : 9 }
// { "_id" : 3, "name" : "Beth", "status" : "active", "level" : 7, "score" : 87 }
// { "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3, "score" : 27 }
ドキュメントのクエリからも引っ張ってこれる
db.profiles.find({name: "Jesse"})
// { "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3, "score" : 27 }
findAndModifyコマンドで更新を行う
// Timのscoreを10点加算
db.profiles.findAndModify({
query: { name: "Tim", status: "active"},
update: { $inc: { score: 10 } }
})
結果
db.profiles.find({name: "Tim"})
// { "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 212 } ←加算されてる