大規模ストアドプロシージャの開発・移行・検証ストアドプロシージャの開発・移行・検証の開発・移行・検証開発・移行・検証

PGConf.ASIA 2018
DAY1 12/11 13:50 – 14:30 @ Track B
高塚 遥 TAKATSUKA Haruka SRA OSS, Inc. Japan
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

1 About this speaker PostgreSQL についての開発・移行・検証 ヘルプデスク、コンサルティング、構築導入、トレーナー等にに15年以上従事

 About this talk
 ストアドプロシージャの開発・移行・検証指向設計についてについて
 PostgreSQLの開発・移行・検証ストアドプロシージャの開発・移行・検証指向の開発・移行・検証大規模ストアドプロシージャの開発・移行・検証開発
 有用なツールなツールツール
 注意点

 その開発・移行・検証ようなツールシステムを商用を商用商用なツールDBMSからの開発・移行・検証移行

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

2

ストアドプロシージャの開発・移行・検証指向(1) ストアドプロシージャの開発・移行・検証指向とは？
 ストアドプロシージャの開発・移行・検証/ユーザ定義関数を多用する開発方針定義関数を多用する開発方針を商用多用なツールする開発方針開発方針
・・・ 造語ですです DBクライアントは必ずストアドプロシージャずストアドプロシージャストアドプロシージャの開発・移行・検証/関数を多用する開発方針を商用使うう 先にインタフェースとなるプロシージャ仕様を決めるにインタフェースとなツールる開発方針プロシージャの開発・移行・検証仕様を決めるを商用決めるめる開発方針
 主要ビジネスロジックはストアドプロシージャで書くビジネスロジックはストアドプロシージャの開発・移行・検証で書くく

 「アプリケーション開発者ががSQL嫌い」 の対処手段の一つい」 の開発・移行・検証対処手段の一つの開発・移行・検証一つつ
 ＯＲマッパー　・・・ ＤＢは単なるデータストアに徹しますマッパー ・・・ ＤＢは単なるデータストアに徹しますは単なるデータストアに徹しますなツールる開発方針データストアに徹しますします ストアドプロシージャの開発・移行・検証指向 ・・・ 大事なツール部分はＤＢでやりますはＤＢは単なるデータストアに徹しますでやります

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

3

ストアドプロシージャの開発・移行・検証指向(2) とある開発方針システムを商用
 流れ作業での印刷物デザインをする業務システムれ作業での印刷物デザインをする業務システム作業での印刷物デザインをする業務システムでの開発・移行・検証印刷物デザインをする業務システムデザ定義関数を多用する開発方針インを商用する開発方針業での印刷物デザインをする業務システム務システムシステムを商用作業での印刷物デザインをする業務システム
末PC
作業での印刷物デザインをする業務システム
端端
末PC
DBサーバ
PostgreSQLSELECT func_xxx(123, 'ABC')
SEL
E

SE
LE
CT

ファイル
サーバ

プリンター

ジョブサーバ
印刷制御
daemon

*FCT
*

ROM

FRO
M func_yyy(15)

データ投入
アプリ
作業での印刷物デザインをする業務システム端端末PC
末PC
作業での印刷物デザインをする業務システム
作業での印刷物デザインをする業務システム
端末PC
作業での印刷物デザインをする業務システム端末PC
データ加工
アプリ

func_zzz()

WebAPサーバ作業での印刷物デザインをする業務システム端端末PC
末PC
作業での印刷物デザインをする業務システム

Tomcat管理アプリアプリ

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

ブラウザ定義関数を多用する開発方針4

ストアドプロシージャの開発・移行・検証指向(3) メリット デメリット DB / AP の開発・移行・検証疎結合をを商用実現できるできる開発方針

 複数を多用する開発方針DBサーバ構成にはには対応しにくいしにくい ORマッパー由来の の開発・移行・検証
非効率ロジックを排除ロジックを商用排除

 DB製品間のの開発・移行・検証PL互換性
はSQL文より低いより低いい 無駄なループ処理等なツールループ処理アプリ等に ロジックの開発・移行・検証オンライン
差し替えが容易し替えが容易えが容易 分はＤＢでやります散しにくいしにくいDBサーバ上の開発・移行・検証リソースを商用使うう もったいなツールい ストアドプロシージャの開発・移行・検証記述言語ですの開発・移行・検証洗練度
 現できる代的な言語と比べるとなツール言語ですと比べるとべる開発方針とCopyright © 2018 SRA OSS, Inc. Japan All rights reserved.

5

大規模ストアドプロシージャの開発・移行・検証ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証開発

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

6

大規模ストアドプロシージャの開発・移行・検証ストアドプロシージャの開発・移行・検証開発

 ストアドプロシージャの開発・移行・検証を商用大量に使用する大規模開発に使う用なツールする開発方針大規模ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ために何が必要か？が必ずストアドプロシージャ要ビジネスロジックはストアドプロシージャで書くか？
 開発支援ツールを揃える ツールを商用揃える える開発方針
 Java等にで作る開発方針の開発・移行・検証と同じように！じように！
 ツールの開発・移行・検証充実という観点では手続き言語は き言語ですは PL/pgSQLが有利

 ドキュメンティング Java等にで作る開発方針の開発・移行・検証と同じように！じように！

 テーブル定義と連動したバージョン管理したバージョン管理アプリ
 注意 データベースGUIクライアントソフトでの開発・移行・検証開発
 注意 共用なツール開発データベース

 いくつかの開発・移行・検証ストアドプロシージャの開発・移行・検証固有の開発・移行・検証注意点
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

7

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(1) plpgsql_check PL/pgSQL の開発・移行・検証コード検査ツールツール PL/pgSQL は 単なるデータストアに徹します純ミスがあっても ミスがあっても CREATE時にはエラーが出ないにはエラーが出ないなツールい 登録済み関数群を一括チェックできるみ関数群を一括チェックできる関数を多用する開発方針群を一括チェックできるを商用一つ括チェックできるチェックできる開発方針
CREATE FUNCTION f_activity_score(p_uid IN int, p_term interval)
RETURNS float4 LANGUAGE plpgsql AS $func$
DECLARE
v_f0 int := 1;
v_f1 int := 1;
v_f2 int;
v_score float4 := 0.0;
r_score int;
BEGIN
FOR r_score IN SELECT score FROM t_act JOIN m_act USING (actid)
WHERE m_act.ts > CURRENT_TIMESTAMP AND t_act.uid = p_uid ORDER BY ts DESC
LOOP
v_score := v_score + 1.0 * r_score / v_f0;
v_f2 := v_f0 + v_f1;
v_f0 := v_f1;
この開発・移行・検証部分はＤＢでやりますは、
v_f1 := v_f2;
END LOOP;
t_act.ts > CURRENT_TIMESTAMP – p_term
RETURN v_score;が、正しいしいEND;$func$;
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

8

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(2) plpgsql_check 実行結果-[ RECORD 1 ]----------------------------------------------------------------------functionid | f_activity_score(integer,interval)
lineno| 9
statement | FOR over SELECT rows
sqlstate| 42703message| column m_act.ts does not exist
detail|hint| Perhaps you meant to reference the column "t_act.ts".
level| errorposition| 60
query| SELECT score FROM t_act JOIN m_act USING (actid)+|
WHERE m_act.ts > CURRENT_TIMESTAMP AND uid = p_uid ORDER BY ts DESC
context|-[ RECORD 1 ]---------------------------------functionid | f_activity_score(integer,interval)
lineno|statement |sqlstate| 00000
ある開発方針関数を多用する開発方針について重大なツールエラーを商用見つけると、つける開発方針と、
message| parameter "$2" is never read
それ作業での印刷物デザインをする業務システム以降は調べてくれない。は調べてくれない。べてくれ作業での印刷物デザインをする業務システムなツールい。
detail|hint|
直す → 再実行で別エラー報告 → 直すす → 再実行で別エラー報告 → 直すエラー報告 → 直す → 再実行で別エラー報告 → 直すす
level| warning extraの開発・移行・検証サイクルが必ずストアドプロシージャ要ビジネスロジックはストアドプロシージャで書く。
position|query|
context|
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

9

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(3) piggly PL/pgSQLカバレッジ検査ツールツール

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(4) 出ない力例
 関数を多用する開発方針ソースコードに対応しにくいした詳細レポートが出力されるレポートが出ない力され作業での印刷物デザインをする業務システムる開発方針

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(5) 注意点 Ruby で書くかれ作業での印刷物デザインをする業務システムている開発方針、環境によってはビルド・インストール手間取るかもによってはビルド・インストール手間の取るかもる開発方針かも 条件分はＤＢでやります岐の組み合わせ検査まではしてくれないの開発・移行・検証組み合わせ検査まではしてくれないみ関数群を一括チェックできる合をわせ検査まではしてくれない検査ツールまではしてくれ作業での印刷物デザインをする業務システムなツールいストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(6) PLprofiler PL/pgSQLむけの開発・移行・検証プロファイリングツール
 個別エラー報告 → 直すの開発・移行・検証SQL実行における開発方針計について測分はＤＢでやります析、一つ定時にはエラーが出ない間のの開発・移行・検証稼動したバージョン管理状態での計測分析 が可能での開発・移行・検証計について測分はＤＢでやります析 が可能
 HTMLレポートを商用出ない力
 Ｃ言語 ＋ 言語です ＋ Python による開発方針 Hook を商用使うった洗練され作業での印刷物デザインをする業務システムた低い負荷実装

13

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(7) 関数を多用する開発方針内の部分ごとに所要時間が報告されるの開発・移行・検証部分はＤＢでやりますごとに所要ビジネスロジックはストアドプロシージャで書く時にはエラーが出ない間のが報告され作業での印刷物デザインをする業務システムる開発方針

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(8) pldebugger + pgAdmin PL/pgSQLの開発・移行・検証デバッガ
 PostgreSQL側ににpldebugger拡張モジュールを導入し、モジュールを商用導入し、pgAdmin4 (pgAdmin3) でステップ実行、変数を多用する開発方針ウォッチ等にの開発・移行・検証デバッガ操作

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(9) SQL の開発・移行・検証ユニットテストフレームを商用ワーク
 pg_regress ・・・ src/test/regress pgUnit ・・・ PL/pgSQLベース
 pgTAP ・・・ perlベース
 testgres ・・・ pythonベース
 PostgreSQL固有の開発・移行・検証ツールである開発方針必ずストアドプロシージャ要ビジネスロジックはストアドプロシージャで書くは無い プロジェクトで既存のテストフレームワークで十分の開発・移行・検証テストフレームを商用ワークで十分はＤＢでやります 初期化 ⇒ SQL実行 ⇒ 「期待される結果」 と比較 ⇒ 実行結果集計され作業での印刷物デザインをする業務システムる開発方針結果」 と比べると較 ⇒ 実行結果集計についてという点はどれ作業での印刷物デザインをする業務システムも同じように！じCopyright © 2018 SRA OSS, Inc. Japan All rights reserved.

16

ストアドプロシージャの開発・移行・検証開発の開発・移行・検証ための開発・移行・検証ツール(10) 開発支援ツールを揃える ツール全般のポイントの開発・移行・検証ポイント
 Hook を商用使うった拡張モジュールを導入し、モジュールには相性問題がありえるがありえる開発方針
 使ううときに導入して、使うい終わったら無効にするわったら無効にする開発方針
 本番サーバでは外しておきたいサーバでは外しておきたいしておきたい shared_preload_library に書くく順番サーバでは外しておきたいで問題がありえる回避できる場合があるできる開発方針場合をがある開発方針 商用なツールエディションの開発・移行・検証PostgreSQL
 ＥnterpriseＤＢは単なるデータストアに徹します社製品なツールど この開発・移行・検証種の機能が様々同梱されているの開発・移行・検証機能が様を決める々同じように！梱されているされ作業での印刷物デザインをする業務システムている開発方針

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

17

ストアドプロシージャの開発・移行・検証固有の開発・移行・検証開発の開発・移行・検証注意点(1)《各種の機能が様々同梱されているの開発・移行・検証注意点》
 識別エラー報告 → 直す子の長さ制限の開発・移行・検証長さ制限さ制限 63 byte は窮屈 多数を多用する開発方針の開発・移行・検証プロシージャの開発・移行・検証を商用区別エラー報告 → 直すできる開発方針意味のあるプロシージャ名を付けるにはの開発・移行・検証ある開発方針プロシージャの開発・移行・検証名を付けるにはを商用付けるにはける開発方針には
 もっと上限が短いいDBMS製品もありました 「関数を多用する開発方針種の機能が様々同梱されている別エラー報告 → 直すを商用あらわす接頭辞_機能モジュール名を付けるには_機能コード」
なツールど、番サーバでは外しておきたい号や機能コードを使ったものにせざるを得ないや機能コードを商用使うったもの開発・移行・検証にせ検査まではしてくれないざる開発方針を商用得ないなツールい

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

18

ストアドプロシージャの開発・移行・検証固有の開発・移行・検証開発の開発・移行・検証注意点(2) エラー設計について
 エラー処理アプリの開発・移行・検証方針決めるめ： プロシージャの開発・移行・検証内の部分ごとに所要時間が報告される ⇔ 呼び出し元び出し元出ないし元A) 読み出し元に意図せぬ全ての例外を外に出すみ関数群を一括チェックできる出ないし元に意図せぬ全ての例外を外に出すせ検査まではしてくれないぬ全ての例外を外に出す全ての開発・移行・検証例外しておきたいを商用外しておきたいに出ないすB) システムを商用レベル例外しておきたいは拾う／代わりに固有の例外を外に出すう／代わりに固有の例外を外に出す代わりに固有の開発・移行・検証例外しておきたいを商用外しておきたいに出ないすC) システムを商用レベル例外しておきたいは拾う／代わりに固有の例外を外に出すう／代わりに固有の例外を外に出す基本的な言語と比べるとに例外しておきたいを商用外しておきたいに出ないさなツールい SQLSTATE 5文より低い字は狭いは狭いい メッセージの開発・移行・検証接頭文より低い字は狭い列ややDETAILで固有の開発・移行・検証区分はＤＢでやりますコードを商用Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

19

ストアドプロシージャの開発・移行・検証固有の開発・移行・検証開発の開発・移行・検証注意点(3) ログ設計について
 PostgreSQLログに出ないす PostgreSQLログを商用後で仕分けできるように接頭文字列を加えるで仕分はＤＢでやりますけできる開発方針ように接頭文より低い字は狭い列やを商用加える開発方針
 拾う／代わりに固有の例外を外に出すってしまった例外しておきたいはログに出ないなツールい：GET STACKED DIAGNOSTICS で取るかも得ないして記録

 独自ログログ
 独自ログにログファイル書くき出ないしする開発方針の開発・移行・検証は色々問題がありえるあり plpythonu、plperlu なツールら syslog 出ない力できる開発方針
 「INSERT INTO log ...」 は、ロールバック問題がありえる

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

20

ストアドプロシージャの開発・移行・検証固有の開発・移行・検証開発の開発・移行・検証注意点(4) PL/pgSQLは遅いい 最速の の開発・移行・検証 PL/v8 と比べるとべてロジック実行が 100倍遅いい 全ての開発・移行・検証データ型、演算子の長さ制限が使うえる開発方針というリッチなツール仕様を決めるの開発・移行・検証代償
 部分はＤＢでやります的な言語と比べるとに別エラー報告 → 直すの開発・移行・検証PL言語です、ある開発方針いはC言語です実装の開発・移行・検証関数を多用する開発方針を商用使うう できる開発方針だけループ処理アプリを商用書くかずストアドプロシージャ、SQL一つ括チェックできる処理アプリを商用目指して性能改善

処理アプリ内の部分ごとに所要時間が報告される容： 100万回の開発・移行・検証関数を多用する開発方針コール- func1: 1000回ループで func2 コール- func2: 1000回ループで func3 を商用コール- func3: 引き数値に き数を多用する開発方針値に に 1 を商用加えて返すす- 各関数を多用する開発方針で演算と変数を多用する開発方針代入

同じように！マシン同じように！処理アプリの開発・移行・検証所要ビジネスロジックはストアドプロシージャで書く時にはエラーが出ない間の (ms)
PL/V8

PL/pgSQL

速の い ------------------------- 遅いいＣ言語 ＋ 関数を多用する開発方針
PL/V8
PL/SQL

PL/Python
PL/Perl
PL/pgSQL

PL/SQL

0

1000

2000

3000

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

4000

5000

6000

7000

8000

21

大規模ストアドプロシージャの開発・移行・検証ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証
商用なツールDBMS からの開発・移行・検証移植

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

22

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(1) 商用なツールRDMBS からの開発・移行・検証マイグレーション
 移行元がストアドプロシージャの開発・移行・検証指向の開発・移行・検証システムを商用の開発・移行・検証場合を コード修正しいコストが余計についてにかかる開発方針
 SQL文より低いを商用移植する開発方針ほうが楽 基本手順:方針策定 ⇒ 機械変換 ⇒ 手動したバージョン管理補正しい ⇒ テスト
 手動したバージョン管理補正しいの開発・移行・検証過程で変換方針に追加すべきことが加わっていくで変換方針に追加すべきことが加わっていく 一つ次手動したバージョン管理補正しい（意図せぬ全ての例外を外に出すの開発・移行・検証理アプリ解なし） → 二次手動補正（意図の理解あり）なツールし） → 二次手動したバージョン管理補正しい（意図せぬ全ての例外を外に出すの開発・移行・検証理アプリ解なし） → 二次手動補正（意図の理解あり）あり）とする開発方針か？

 SQL移植と共通の課題 の開発・移行・検証課題がありえる + プロシージャの開発・移行・検証固有の開発・移行・検証課題がありえる 共通の課題 ： NULLと空文より低い字は狭い列や、組み合わせ検査まではしてくれないみ関数群を一括チェックできる込み関数の非互換、データ型非互換、み関数群を一括チェックできる関数を多用する開発方針の開発・移行・検証非互換、データ型非互換、etc
 プロシージャの開発・移行・検証固有：
基本構文より低い非互換、パッケージ変数を多用する開発方針、トランザ定義関数を多用する開発方針クション処理アプリ対応しにくい、etc
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

23

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(2) プロシージャの開発・移行・検証に変換ツールは使うえる開発方針か？
 ora2pg
・・・ 柔軟な設定調整 なツール設定調べてくれない。整 / 対応しにくいできなツールい箇所も多い

 Ispirer
・・・ マルチDB対応しにくいの開発・移行・検証商用なツール製品 / 変換対応しにくい は ora2pg と同じように！程で変換方針に追加すべきことが加わっていく度くらいか SQLines
・・・ マルチDB対応しにくいの開発・移行・検証 OSS / 上２つに比べるとやや劣るつに比べるとべる開発方針とやや劣るる開発方針

 EDB Postgres Migration Toolkit
・・・最も優れているが ネイティブ れ作業での印刷物デザインをする業務システムている開発方針が ネイティブ PostgreSQL に移植する開発方針わけではなツールい AWS Schema Conversion Tool
・・・ オンプレ同じように！士目的な言語と比べるとにも使うえる開発方針 ／代わりに固有の例外を外に出す 変換不能レポートが良いい パッケージは鬼門 ⇔ 大規模ストアドプロシージャの開発・移行・検証では当然パッケージ使用パッケージ使う用なツール
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

24

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(3) パッケージ変数を多用する開発方針
 セッション単なるデータストアに徹します位 + トランザ定義関数を多用する開発方針クション制御外しておきたい の開発・移行・検証変数を多用する開発方針実現できる方法

説明

関数を多用する開発方針
PKG1.CONSTVAL1() なツールど

どの開発・移行・検証方法でも配列や型や行型、テーブル型を商用（テキスト表現できるで）格納可能。

参照専用なツールの開発・移行・検証定数を多用する開発方針なツールらこれ作業での印刷物デザインをする業務システムで良いい。

一つ時にはエラーが出ないテーブル
PKG2.set('VAL2', '100'::int)
PKG2.get('VAL2')::int
なツールどラッパ関数を多用する開発方針を商用用なツール意する開発方針。
初回に CREATE TEMP TABLE する開発方針。

ＧＵＣ言語 ＋ パラメータ

セッションが寿命となる点は一致となツールる開発方針点は一つ致●実行ステップ数を多用する開発方針が多くて低い速の ●
値に の開発・移行・検証変更がロールバックしてしまうがロールバックしてしまう●●

current_setting('PKG3.VAL3', true)
set_config('PKG3.VAL3', 'A', false)●●●

pg_variables

セッションが寿命となる点は一致となツールる開発方針点は一つ致
大文より低い字は狭い小文より低い字は狭い同じように！一つ視も実現も実現できる
動したバージョン管理作する開発方針が本来の 的な言語と比べるとに大量に使用する大規模開発データ用なツール途でないでなツールい
値に の開発・移行・検証変更がロールバックしてしまうがロールバックしてしまう

セッションが寿命となる点は一致となツールる開発方針点は一つ致●パッケージ変数を多用する開発方針移植用なツール途でないが意識され作業での印刷物デザインをする業務システムている開発方針●
値に の開発・移行・検証変更がロールバックしてしまうがトランザ定義関数を多用する開発方針クションと独立●
クラウドPostgreSQLサービスでは使うえなツールい●

拡張モジュールを導入し、モジュールを商用導入して、
pgv_set('pkg4', 'val4', 123)
pgv_get('pkg4', 'val4', NULL::int)

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

25

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(4) COMMIT/ROLLBACK PostgreSQLは関数を多用する開発方針内の部分ごとに所要時間が報告されるで COMMIT/ROLLBACKできなツールい PG11 の開発・移行・検証 PROCEDURE で対応しにくいしたが制限も多い 自ログ律型トランザ定義関数を多用する開発方針クション
 PostgreSQLに対応しにくい機能は無い
 DBlink拡張モジュールを導入し、で対応しにくいする開発方針

 例外しておきたい定義
 PL/pgSQLではできなツールい エラーメッセージやエラー属性で識別エラー報告 → 直すさせ検査まではしてくれないる開発方針
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

26

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(5) カーソル PostgreSQLではカーソルの開発・移行・検証名を付けるには前空間のがグローバル 呼び出し元び出し元出ないし先にインタフェースとなるプロシージャ仕様を決める関数を多用する開発方針と呼び出し元び出し元出ないし元に同じように！名を付けるにはカーソル名を付けるにはがある開発方針と衝突するする開発方針

 カーソルでの開発・移行・検証行ロックの開発・移行・検証仕様を決める差し替えが容易異 FOR UPDATE付けるにはきの開発・移行・検証カーソルが行を商用ロックする開発方針タイミングは？
 カーソルループ中に対象行更新をすることは安全ではないに対象行更がロールバックしてしまう新をすることは安全ではないを商用する開発方針ことは安全ではなツールい 配列や／代わりに固有の例外を外に出す複合を型
 PL/pgSQL の開発・移行・検証表現できる力は高く、複雑なデータ型もなツールデータ型もOK
 配列や利用なツール時にはエラーが出ないの開発・移行・検証仕様を決める違いに注意いに注意

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

27

ストアドプロシージャの開発・移行・検証指向システムを商用の開発・移行・検証移植(6)《別エラー報告 → 直すの開発・移行・検証方針》
 プロシージャの開発・移行・検証を商用アプリケーションコードに移植 プロシージャの開発・移行・検証 to プロシージャの開発・移行・検証 を商用あきらめる開発方針
 MVC の開発・移行・検証 Modelオブジェクト内の部分ごとに所要時間が報告されるの開発・移行・検証メソッドにする開発方針
 プロシージャの開発・移行・検証に多段の一つコール／代わりに固有の例外を外に出す依存のテストフレームワークで十分関係があると面倒がある開発方針と面倒 大量に使用する大規模開発データ取るかも得ないに注意 トリガはプロシージャの開発・移行・検証移植する開発方針しかなツールいCopyright © 2018 SRA OSS, Inc. Japan All rights reserved.

28

まとめ

 ストアドプロシージャの開発・移行・検証指向にメリットあり
 単なるデータストアに徹します一つの開発・移行・検証データベースで完結する開発方針なツールら今でも有益でも有益

 大規模ストアドプロシージャの開発・移行・検証開発にはそれ作業での印刷物デザインをする業務システムなツールりの開発・移行・検証手順／代わりに固有の例外を外に出す道具立てを商用 DBマイグレーションではプロシージャの開発・移行・検証は鬼門だが、立ち向かえないほどではない向かえなツールいほどではなツールい《注意を商用要ビジネスロジックはストアドプロシージャで書くする開発方針箇所》
 パッケージ トランザ定義関数を多用する開発方針クション
 カーソル ロギング／代わりに固有の例外を外に出す例外しておきたい処理アプリ

Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

29

URL： http://www.sraoss.co.jp/
Copyright © 2018 SRA OSS, Inc. Japan All rights reserved.

30