##はじめに
こんにちは。
昨日、2/1(金)に大阪で行われた勉強会
関西Node学園 5時限目 - connpass
に参加してきました。
バックエンドエンジニアでも楽しめるような内容が盛り込まれており非常に勉強になりました。
その中でも@leichtgewicさんがお話しされていた
「分散データの基本」について自分なりにゆるふわと調べてみたので備忘録として記事にします。
分散型DBとは
そもそも分散型DBとは、
現在の主流である**中央集権管理型(そのサービスやシステムを運用する事業者が持つDBで
集中管理する方法)**に対して
ネットワーク上、もしくは地理的に近くて複数存在するDBで分散管理する方法です。
メリットとしては以下が挙げられます。
- 通信負荷・費用の軽減
- パフォーマンスの向上(処理速度など)
- 障害が起きても全体の機能が失われない
...
上記のメリットに加えてユーザは複数あるDBを意識せずにあたかも1つのDBのようにアクセス出来ます。
いわゆる透過性です。
対して、デメリットとしては
- DBの構築や管理が複雑化する
- ACID特性が保たれづらい
レプリケーション(他のDBとのデータの同期する事)、デプリケーション(マスターとなるDBのデータを他のDBに同期する事)を行う必要があるのでその際に「あっちのDBとこっちのDBの情報がちょっと違う...」な事が稀に起こってしまうわけですね。
以下記事の図が概略を掴みやすかったです。
CDN(Contents Delivery Network)も距離的に近いサーバとやり取りして
通信の高速化、負荷分散を行う点で似たような考え方でしょうか。
CDNではPush型やPull型などの種類があります。
ブロックチェーンとの違い
何だか記事を書いていると複数データを管理するところがあって...
それぞれ更新して...ブロックチェーンと何が違う...?という気分になってきました。
大まかにまとめると
分散型DBは「分散したノードで個別に台帳を管理している」のに対して、
ブロックチェーンにはDBが無く、「分散したノードはただ一つの台帳を全員で管理しています。」
なのでブロックチェーンの方は更新などに他のノードの合意が必要になったりします。
詳しくは下記記事をご参照ください。
AWSに絡めると?
先程軽く紹介したCDNのサービスが天下のAWSに存在します!
Amazon CloudFrontはコンテンツファイルをサーバーから直接配信せず、
CDNを介してユーザーに配信するサービスです。処理速度が速い上に1枚かますことによって
プロキシサーバ的な役割も果たします。
静的、動的コンテンツの配信やAPIの呼び出しに使われているようです。
サービスの説明読んでたり使ってる企業を見てるとワクワクしてきますよね。
あとがき
ソースコード無しの、参照列挙の記事となってしまいました。
ですが今回参加した勉強会がネットワークの事について調べる良い切っ掛けとなりました。
今日触れたKVSやマークルツリーについてもそのうち書いていきたいです。