Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PostgreSQL🐘と 比較しながら選ぶデータベース / select-database-u...

PostgreSQL🐘と 比較しながら選ぶデータベース / select-database-usecase

Open Source Conference 2020 Online/Niigataの登壇資料です。
https://ospn.connpass.com/event/181888/

soudai sone

July 25, 2020
Tweet

More Decks by soudai sone

Other Decks in Technology

Transcript

  1. 自己紹介
 曽根 壮大(35歳)
 Have Fun Tech LLC 代表社員
 
 そ 

    ね   たけ とも
 • 日本PostgreSQLユーザ会 勉強会分科会 担当
 • 3人の子供がいます(長女、次女、長男)
 • 技術的にはWeb/LL言語/RDBMSが好きです
 • コミュニティが好き
  2. RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL

    ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋

  3. RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL

    ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋

  4. • ファイル
 • Cookie
 • RDBMS
 • NOSQL
 セッションを保存したい セッションの保存先


    
 ApacheのWebサーバのローカルなどに 
 セッションIDに紐づけて保存する。 
 
 シンプルな反面、複数のWebサーバ運用の時に 
 セッション情報を共有するにはファイル共有が必要。 

  5. • ファイル
 • Cookie
 • RDBMS
 • NOSQL
 セッションを保存したい セッションの保存先


    
 ブラウザのCookieの中にセッション情報も一緒に保存し、リク エストの際に一緒に送信する。 
 
 Webサーバが複数台でもセッションを共有できるので 
 負荷に対してはスケールするが、 
 Cookieをジャックされるなどの様々なリスクがある。 
 
 JSからCookieを触れる(HttpOnly=false)だと特に危険 

  6. • ファイル
 • Cookie
 • RDBMS
 • NOSQL
 セッションを保存したい セッションの保存先


    
 セッションをRDBMSに保存するとセキュリティ的にも安心。複数の Webサーバでセッション共有することができる。 
 
 しかし負荷が高くなるとRDBMSが問題になりやすい。 
 
 特にメインのデータと同じRDBMSで共有していると、 
 高負荷時にRDBMSにあわせ技で負担になる。 

  7. • ファイル
 • Cookie
 • RDBMS
 • NOSQL
 セッションを保存したい セッションの保存先


    
 シンプルにWebサーバ間でセッションを共有できて、 
 セキュリティ的にも安心で、 
 スケールするデータストアが欲しい!! 

  8. • 分散型インメモリKVS(キーバリューストア)
 ◦ マルチスレッドでMany CPUにも強い
 ◦ 簡単に分散することも出来る
 • しかし、AWSのElasticacheを使う場合は分散方法に注意が必要
 ◦

    同じセッションを取得するクライアント側の実装が必要
 ◦ PHPはAWSが専用クライアントを提供してる。
 • アトミックな処理は苦手なので、セッションのロックが使いたい場合の時は 注意が必要
 ◦ 例えばSPAで非同期で同時にセッションを触るなど
 セッションを保存したい Memcached

  9. • インメモリKVS(キーバリューストア)
 ◦ プライマリ、セカンダリ構成
 ◦ クラスタ構成が作れるRedis Clusterもある
 • RDBMSと同じようにシンプルにセッションを扱える
 ◦

    アトミックなロック処理が作れるので安心
 • しかしRedis Clusterでない場合に書き込みはスケールしない
 ◦ そこでRedis Clusterなのだけど、お高くなりやすい
 • 多くのWebサービスなら1台でも対応可能
 ◦ メンテナンス出来るなら、あとからCluster移行もできる範囲
 セッションを保存したい Redis