DBのレプリケーションとシャーディングについて雑に書く

どうもnasaです。 本日、データベース実践入門という本を読んでいて、DBのスケールアウトに関する話が面白かったので、自分なりにメモしようと思い書いています。

スケールアウト

一旦スケールアウトもメモメモしていく

自分のWEBアプリでは経験ないけど、単一DBサーバーでは性能限界が来てしまうらしい。

そこで、スループット向上の方法としてスケールアウトがある。

スケールアウトはサーバーマシンを複数用いてアプリケーションからの負荷を分散する方法。

実際に処理能力がスケールするかは処理の内容やアーキテクチャによる。とのこと

レプリケーション

レプリケーションは、スケールアウトの代表的なアーキテクチャ

DBサーバーに含まれるデータを他のDBサーバーへ複製する技術。

複製のもとになるDBをマスタ、複製先をスレーブと呼ぶ。

DBへの更新処理はマスタへ行い、それをスレーブに反映する。そして、参照系の処理はスレーブへ行うことで参照系の負荷を分散している。 (トランザクション内での必要な参照はマスタに対して行う必要あり。)

シャーディング

シャーディングは行ごとにデータの格納先DBを変更するアーキテクチャ

僕のイメージではパーティショニングをほぼ一緒。 DBが別々だけど、

例が正しいかわからんけど、user_idの1~100はシャード1へ、101~200はシャード2へ、、、みたいな感じ。

どのシャードにデータを格納するべきか?というロジックがアプリケーション側に必要になるので、少しアプリケーションが複雑になる。

アプリケーションを複雑にしてでも、更新系処理の性能を上げたい!天元突破したい!というときにはシャーディングがおすすめらしい。

参照系もスケールさせたいときは、レプリケーションと組み合わせるのがいいよ。

感想

「サーバーサイドエンジニア見習いです!」みたいなことを言っておきながら、ここらへんの話も知らず、恥ずかしいです。

ことしはサーバー/インフラを支える仕組みを学ぶ一年にしたいな〜と思いました。

でも、ここらへんのことって、実践する機会が少なくない? 個人規模ではあまり必要なさそうだし、インターンの分際にはやらしてもらえなさそうだし。

どうするのが良いのですかね?

メタプログラミングRubyを読んでの感想的ななにか

どうも、メタプログラミング = かっこいいと思っているナサです。

最近先輩に「メタプロRubyはいい本だよ!」と言われ読み始めました。

普段からRubyを使っているのですが、Rubyの魅力や強力さを知らずに使っていたのだと思い知りました。 そこのあなた。慢心注意ですよ。

ここでは、メタプロRubyに関する感想やメモを書き連ねていきます これは超私的メモ(人にわかるように書くつもりのない)文章ですので読む価値はありませんよ〜。 ナサさんにとっては価値絶大ですが。

続きを読む

2018年の最先端バックエンドエンジニアになるよっていう話

どうも最近アウトプットって大事かもな〜。と思っているナサです。 とは言っても、「やらなきゃ!」って思ってやるならそれは楽しめてないのでやらなくてもいいのでは?と思ってしまいますね。

この話をしだすとめっちゃ脱線する気がするので略!

  • 本題
    • Step 1– Learn a Language
    • Step 2 — Practice what you have Learnt
  • 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

できること

Oct-02-2018 00-33-20.gif

  • 一瞬でメモが取れる
  • Markdownで書ける
  • greでメモをすぐ見つける
  • シェルで全部できる

使い方

rmemo new をするとタイトルを聞かれます。その入力値をもとにファイル名を決めファイル作成をします。

rmemo configを実行するとconfig.tomlが開くのでお好みで使用エディタやファイル保存先を指定できます

rmemo editを実行するとファイルセレクタが起動してファイルを簡単に絞り込めます

rmemo grepgrepしてあの内容がすぐ見たいと言うときに使えます

ホントはrmemoではなくmemoにしたかったのですがcargo.ioで公開しようとしたら、名前を取られてました

エウレカインターンに行ってきた話

どうもナサです。

普段はRails、ReactでWebサービス開発をしています。

今回はエウレカインターンに行ってきた感想を書いていきます

続きを読む