下記の続き
--- ここから課題20180303に書いたpostgresqlの課題リスト ---
・transaction log
・pg-dump
・PostgreSQLのファイル上のキャッシュ/バッファ
・PostgreSQLのメモリ上のキャッシュ/バッファ
・PostgreSQLの各メモリヒープの種類、内容、確認方法、変更方法
・PostgreSQLの各メモリヒープの種類、内容、確認方法、変更方法
・PostgreSQLの自動バキュームデーモンとは?
・PostgreSQLの構成、仕組み、動作原理
・PostgreSQLのリソース確認方法
・PostgreSQLのパフォーマンス確認方法
・PostgreSQLのログの種類と内容
・PostgreSQLのパフォーマンスチューニング
・PostgreSQLのオンラインバックアップ
・PostgreSQLのローカルHAクラスタ化
・PostgreSQLのDRレプリケーション
・PostgreSQLのスケールアウト(負荷分散クラスタ化)
--- ここまで ---
---ここから ミドルウェアの状態確認と性能評価およびチューニング に書いた疑問---
■RDBMSやJVMは起動したら、OSからまとまった量のヒープ領域をmallocしてキープする。
これらのミドルウェアは、多めのヒープ領域を確保して、その中から必要な分を切り出してサブコンポーネントやプログラムにアサインする。
なので、OSからは、これらのミドルウェアが実際どれだけメモリを使用していて、枯渇までどのくらい余裕があるのか把握できない。
なので、RDBMSやサーブレットコンテナのヒープ使用率などは、これらプロダクト側で用意されたツールを使って状態確認や監視をしないといけない。
上記はpostgresqlの場合も当てはまるか調べる
■PostgreSQLのトランザクションログは時刻逆行で壊れないらしい?
■PostgreSQLのオンラインバックアップはテーブルロックではなく、トランザクションログからSQLを再実行する方式なのでテーブル間の不整合は起こらないらしい?
■ディスク上のオブジェクト
・システム寄りのオブジェクト
- バッファやキャッシュ
- テンポラリファイル
- トランザクションログ
- その他管理データを含むファイル類
・データ寄りのオブジェクト
- テーブル
- インデックス
■メモリ上のオブジェクト
・バッファ、キャッシュ
・スタック
・その他のヒープ
■CPU負荷が高くなる処理
■ディスクIOが高くなる処理
■リソース枯渇を引き起こす箇所
■データロストになりかねない箇所
・オンラインバックアップ
・HAクラスタのフェールオーバ/フェールバック
・表領域の破損
・バッファの枯渇
・トランザクションログの破損
・レプリケーションの失敗
・異常終了
■ダウンタイムを引き起こしかねない箇所
・ヒープの枯渇
・OS領域のメモリ枯渇からswapout
・処理の遅延
・異常終了
・ハング
■セキュリティインシデントになりそうな箇所
【方針】
データ構造と投げるSQLを設計してシングル構成DB2とWASでWebアプリと集計ジョブを作る
・PostgreSQL silver資格本全部やってみよう
・PostgreSQL gold資格本買ってやってみよう
・資格受けてみよう
・PostgreSQLだけじゃなくSQL、データ構造に関する共通の基礎を抑えよう
・他のRDBMSとの相違を理解しつつ、RDBMSに共通の一般的な知見を帰納しよう
・RDBを含めたDBに対する機能要件、非機能要件を調べてDBやデータ構造設計に対して知見を持とう
- いくつかの典型的なありがちの業務システムのRDB
- CMSのRDB
- 掲示板のRDB
- 勘定系のRDB
ミッションクリティカル。日中はオンライントランザクション処理、夜間はバッチ処理
- デジタルアーカイブのような画像や動画データを格納するデータベースの要件
- memcachedのような特定用途で超高速DB
- 大規模なDB
- クラウドで利用される、スケーラビリティ、高速性、冗長性を備えたストレージ
- 検索エンジンに使われるインデックスの特徴
- OSのあちこちで使われていたBerkeley DBとは?
- 監視マネージャのRDBが備えるべき特徴
- ジョブマネージャのRDBが備えるべき特徴
- そもそもテキストファイル一枚のDBの限界。あるいはそれで充分なケース
- データウェアハウス
- ビッグデータを格納するDB
・RDB以外のDBについても考えてDBに共通の一般的な知見を帰納しよう
- NoSQL
グラフ型DBとは?
KVSとは?
Radis
mongoDBとは?
- ファイルシステム
OS標準のファイルシステムの機能だけでどこまで、信頼性、高速性、整合性などを持たせる
ことができるか?
- 分散ストレージ
Hadoop
GlusterFS
Spark
hadoopより後発でイケてるらしい
- ディレクトリ
LDAP
- solrのインデックス
- その他
--- ここまで ---
■pg_dumpコマンド再考
・copyコマンドでバイナリファイルの入力と出力
・pg_dumpとpg_dumpallの違い
・pg_dumpやpg_dumpallを使うとなんで静止点を作らなくてもデータベースのバックアップを取得できるのか?
・いろいろなDDL、DML、DCLのpg_dump出力ファイルの表現
・pg_dumpで出力されるdumpファイル内のcopyコマンドのオプションで「stdin」を指定している場合、copyコマンドの行の続く行に、stdinで入力されるデータストリームを書き込めるのか?
※データストリームはバイナリの場合は見たところ見たところ16進数データのようだ。
ASCIIテキストデータやマルチバイトコードテキストデータの場合はどうなるんだろう?
■postgresqlのトランザクションログ
DB2と比べてどんな仕様の違い、確認やチューニング用のツールとしてどんなものがあってどんなことをかくにんできるのかDB2と比較してみる。
※DB2には確認やチューニング項目が非常に多く、ツールも充実していた。 別のRDBMSと比較することで、PostgreSQLのドキュメントだけでは読み取れないPostgreSQLがどんなRDBMSなのかを把握する。
■extensionとは
■スキーマ再考
■そもそもデータベースの設計
・postgresql資格本の第一章
※論理設計とかER図とか
■そもそもsql
■そもそもデータベースの物理設計
■データベースのパフォーマンス計測とロギングとチューニング
■そもそもDBのレプリケーションとバックアップ
■postgresqlのHAクラスタ化
■postgresqlの負荷分散クラスタ化