DBのレプリケーションとシャーディングについて雑に書く
どうもnasaです。 本日、データベース実践入門という本を読んでいて、DBのスケールアウトに関する話が面白かったので、自分なりにメモしようと思い書いています。
スケールアウト
一旦スケールアウトもメモメモしていく
自分のWEBアプリでは経験ないけど、単一DBサーバーでは性能限界が来てしまうらしい。
そこで、スループット向上の方法としてスケールアウトがある。
スケールアウトはサーバーマシンを複数用いてアプリケーションからの負荷を分散する方法。
実際に処理能力がスケールするかは処理の内容やアーキテクチャによる。とのこと
レプリケーション
レプリケーションは、スケールアウトの代表的なアーキテクチャ。
DBサーバーに含まれるデータを他のDBサーバーへ複製する技術。
複製のもとになるDBをマスタ、複製先をスレーブと呼ぶ。
DBへの更新処理はマスタへ行い、それをスレーブに反映する。そして、参照系の処理はスレーブへ行うことで参照系の負荷を分散している。 (トランザクション内での必要な参照はマスタに対して行う必要あり。)
シャーディング
シャーディングは行ごとにデータの格納先DBを変更するアーキテクチャ。
僕のイメージではパーティショニングをほぼ一緒。 DBが別々だけど、
例が正しいかわからんけど、user_idの1~100はシャード1へ、101~200はシャード2へ、、、みたいな感じ。
どのシャードにデータを格納するべきか?というロジックがアプリケーション側に必要になるので、少しアプリケーションが複雑になる。
アプリケーションを複雑にしてでも、更新系処理の性能を上げたい!天元突破したい!というときにはシャーディングがおすすめらしい。
参照系もスケールさせたいときは、レプリケーションと組み合わせるのがいいよ。
感想
「サーバーサイドエンジニア見習いです!」みたいなことを言っておきながら、ここらへんの話も知らず、恥ずかしいです。
ことしはサーバー/インフラを支える仕組みを学ぶ一年にしたいな〜と思いました。
でも、ここらへんのことって、実践する機会が少なくない? 個人規模ではあまり必要なさそうだし、インターンの分際にはやらしてもらえなさそうだし。
どうするのが良いのですかね?
コードリーディングを支える技術
コードリーディングを支える技術
続きを読む2018年の最先端バックエンドエンジニアになるよっていう話
どうも最近アウトプットって大事かもな〜。と思っているナサです。 とは言っても、「やらなきゃ!」って思ってやるならそれは楽しめてないのでやらなくてもいいのでは?と思ってしまいますね。
この話をしだすとめっちゃ脱線する気がするので略!
- 本題
- Step 1– Learn a Language
- Step 2 — Practice what you have Learnt
- trashコマンド
- メモコマンド
- インタプリタ
- Step 3 — Learn Package Manager
- Step 4 — Standards and Best Practices
- Step 5 — Security
- Step 6 — Practice
- Step 7 — Learn about Testing && Step 8 — Practical
- Step 9 — Learn about the Relational Databases
本題
この記事 には2018年の最先端バックエンドエンジニアになるためのロードマップが書いてあります。
少し前にこの記事を読んで「あ。この通りに進めてみよう!」と思いました。 ただやるだけじゃ味気ないですし、どうせならステップごとに何を学んだかアウトプットするのもいいかと思いまとめることにしました。
続きを読むRustでメモコマンド「rmemo」を作った
僕は普段思いついた疑問点などをメモするようにしています。 基本ターミナルで作業しているのでメモ用のGUIツールなどは使わず、vimで書いてます。
こんな感じに
$cd ~/Document/memo $vim hogehoge.md
う〜ん。メモコマンド一発でやったら良くね?そう思いぱぱっと作りました。
ソース
https://github.com/k-nasa/rmemo
できること
使い方
rmemo new
をするとタイトルを聞かれます。その入力値をもとにファイル名を決めファイル作成をします。
rmemo config
を実行するとconfig.tomlが開くのでお好みで使用エディタやファイル保存先を指定できます
rmemo edit
を実行するとファイルセレクタが起動してファイルを簡単に絞り込めます
rmemo grep
でgrepしてあの内容がすぐ見たいと言うときに使えます
ホントはrmemoではなくmemoにしたかったのですがcargo.ioで公開しようとしたら、名前を取られてました