Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Oratopostgres-hiroshima

931 views

Published on

OSC2016 広島 でのPostgreSQLへの移行に関するセッション資料です。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Oratopostgres-hiroshima

  1. 1. PostgreSQLへの 移行入門 商用データベースから PostgreSQLへ まず知っておいてほしいまとめ OSC2016 Hiroshima 2016.11.27 NPO法人 日本PostgreSQLユーザ会 株式会社アシスト 喜田 紘介
  2. 2. PostgreSQLで学ぶデータベース技術 Japan PostgreSQL User's Group 2 postgres=# ¥x auto postgres=# SELECT * FROM “自己紹介” postgres -# WHERE name = ‘喜田紘介’; -[ RECORD 1 ] 名前 | 喜田 紘介 twitter | @kkkida_twtr blog | http://kkida-galaxy.blogspot.jp/ 所属1 | NPO法人 日本PostgreSQLユーザ会 所属2 | 株式会社 アシスト 仕事 | PostgreSQLを中心としたDB技術支援、教育、サポート、プリセールス | 活動に従事している。最近は、商用DBとの互換に優れたPostgreSQLの | 強化版「EDB Postgres」の検証、技術支援の確立、販促など。 | 国内でのPostgreSQL普及・促進を目指す、日本PostgreSQLユーザ会の | 理事としても活動し、全国各地での講演、技術相談、イベントの開催 | などに楽しさを見出している。 予備1 | B’z好き。カラオケ好き。ダイビング始めました。マラソン、テニス。 予備2 | このテーブル設計はイケてない!注意!
  3. 3. PostgreSQLへの移行入門 単なるテーブルの移行、ストアドの書き換えだけが データベースの移行ではない。 適用領域を知って、移行の全体像をつかんで、一歩を 踏み出してみましょう。 Japan PostgreSQL User's Group 3 異なるデータベースからPostgreSQLへ 学習すること  ポスグレどれぐらい使えるの?  移行の全体像と細部をつかむ  とにかく移行してみる 目次
  4. 4. PostgreSQLへの移行入門 単なるテーブルの移行、ストアドの書き換えだけが データベースの移行ではない。 適用領域を知って、移行の全体像をつかんで、思わぬ壁 にぶつかるリスクを減らしましょう! Japan PostgreSQL User's Group 4 異なるデータベースからPostgreSQLへ 学習すること  ポスグレどれぐらい使えるの?  何を参考にしたらいいの?  移行時の大変なところ 目次 この資料は、 http://kkida-galaxy.blogspot.jp/2016/11/osc16hi.html で公開しています。 「kkida-galaxy」でググってください。
  5. 5. PostgreSQLへの移行入門 システムの用途とPostgreSQL 何が似てる?何が違う? PostgreSQLとデータ連携 Japan PostgreSQL User's Group 5 異なるデータベースからPostgreSQLへ  ポスグレどれぐらい使えるの?  移行の全体像と細部をつかむ  とにかく移行してみる 目次
  6. 6. システムの用途とPostgreSQL RDBの得意分野 負荷分散レプリケーション Japan PostgreSQL User's Group 6 大量のトラフィックをさばくwebサービスの場合 RDBMS PostgreSQL APサーバー • 参照クエリが多数 • ほとんどのクエリが、 ユーザーIDをキーに した一意検索 • メモリ上で処理 RDBの得意分野 PostgreSQL Master PostgreSQL 同期Slave1 PostgreSQL 非同期Slave2 APサーバー • 参照クエリが多数 • 更新はマスターのみ • 参照はスレーブで可能
  7. 7. システムの用途とPostgreSQL 豊富なSQL構文、拡張 高可用レプリケーション Japan PostgreSQL User's Group 7 複雑なSQLを賢く実行する業務システム RDBMS PostgreSQL APサーバー • webと比較して、同時実行 は若干減 • 業務要件に従ってクエリの パターンが多種多様 • 集計は扱うデータ量が増大 拡張データ型や 索引で高速に処理 PostgreSQL Master PostgreSQL 非同期Slave1 APサーバー • システムダウンの影響が 大きい • 堅牢かつ高速な復旧が 求められる Window関数など 便利な構文に対応 高可用 クラスタ ウェア vip 【参考】 PG-REX pgpool-II
  8. 8. システムの用途とPostgreSQL パーティショニング パラレルクエリ Japan PostgreSQL User's Group 8 大量データを一括で読み込む分析システム RDBMS PostgreSQL APサーバー • 同時実行は少数 • 過去数年分のデータを保管 しているようなシステム • 直近xヶ月分を分析 • あらかじめテーブルを パーティション分割 • I/Oを大幅に減らして 集計時間を削減 • 豊富な分析用SQL構文 や索引も活用 • 大規模表の読み取り、結合、 集約に利用できる • 1 クエリを内部で複数並列 に分割して実行 • パーティショニングとの 併用で効果絶大 今秋リリース Ver9.6の新機能
  9. 9. 何が似てるの?何が違うの? ACIDを守る、標準SQLに準拠、メンテナンス性・・など A:原始性 C:一貫性 I:独立性 D:永続性 標準SQL準拠を目指していつも検討が進められている メンテナンス性 Japan PostgreSQL User's Group 9 RDBMSとしての基本は備えている
  10. 10. 何が似てるの?何が違うの? 用語の違いはあるものの、ほぼ同じ図でイメージできる Japan PostgreSQL User's Group 10 全体のアーキテクチャ
  11. 11. 何が似てるの?何が違うの? 異なるアーキテクチャでは、異なる運用課題がある Japan PostgreSQL User's Group 11 MVCCの実現
  12. 12. PostgreSQLと外部データ連携 Japan PostgreSQL User's Group 12 FDWを介したデータ連携 Foreign Data Wrapper PostgreSQL側にダミーの表(外部表)を持ち、 自身の表のようにSQLを書ける SQL実行時点のデータを読み取りに行くため、常に最新 集計・加工する場合は、SQLで加工しマテリアライズド ビューで保存 oracle_fdw SELECT SELECT postgres_fdw ※別筐体の Postgresに file_fdw ※様々なデータソースに対応
  13. 13. PostgreSQLへの移行入門 PGEConsのデータベース移行に関する成果物 移行ステップの全体像をつかむ 移行時の大変なところ Japan PostgreSQL User's Group 13 異なるデータベースからPostgreSQLへ  ポスグレどれぐらい使えるの?  移行の全体像と細部をつかむ  とにかく移行してみる 目次
  14. 14. PostgreSQLへの移行を考えるなら 3年にわたる成果が公開中 2012年度:異種DBからの移行ノウハウ・ツール等整理 2013年度:移行元として対象にするDB製品を追加 2014年度:DBを移行した場合にクリアしておくべき 試験項目を整理 2015年度:継続中。現在成果発表に向けて鋭意対応中 Japan PostgreSQL User's Group 14 PGEConsで移行をテーマに研究成果を発表
  15. 15. PostgreSQLへの移行を考えるなら 移行の行程を定義し、各工程での検討ポイントを調査 注目されがちなSQLやストアドの移行以外も調査 Japan PostgreSQL User's Group 15 PGEConsで移行をテーマに研究成果を発表
  16. 16. DB移行フレームワーク編 移行作業全体の行程を知る アセスメント システム構成移行 異種DB連携 定義・データ移行 アプリや運用の移行 評価 チューニング 本番データ移行 Japan PostgreSQL User's Group 16 後続の各ステップで収集する情報と、成果物を整理
  17. 17. 構成検討・データ連携検討 PostgreSQLで本当に大丈夫なのか ポイントは、本日冒頭の話  OLTP系のシングル構成であれば、性能を実現できる(可能性が高い)  複数台構成も可能、だが、サービスレベルの見直しは避けられない  DWH用途では、どこまで期待するか判断基準を誤らないこと データ連携の選択肢  複数DBで連携しているものを一部だけPostgreSQLに置き換える?  手段はいくつか提供されている  各種FDW(Foreign Data Wrapper:Database Link的な使い方)  OSSツール(トリガベースのテーブル単位レプリケーション) Japan PostgreSQL User's Group 17 ここで決断が必要!決めるのは「あなた自身」ですよ!
  18. 18. 定義移行・データ移行 定義移行 オブジェクトの移行で悩むのは主に差分更新Mビュー Ora2Pgの使い方に慣れ、それがハードルにならないよ うに頑張る PostgreSQLのほうがデータ型を細かく使い分ける (例:NUMBER → numeric?integer?real?) データ移行 Ora2Pgで中間ファイル生成 文字コード変換を行う 移行にかかる時間に縛りがある場合、ハードルが高いの で注意 Japan PostgreSQL User's Group 18 OSSツールのOra2Pgが有用
  19. 19. SQL修正 修正箇所を確認  数が多いことがほとんどなので、なるべくツールでカバー  ただし、修正箇所のピックアップ精度は高くない SQL修正  対応が決まっているものがほとんど、でも人手が必要 Japan PostgreSQL User's Group 19 OSSツールdb_syntaxdiffを利用 Oracleで使用しているSQL PostgreSQLでの対応 EDB Postgresでの対応 ・外部結合演算子(+) ・外部結合OUTER JOIN 対応 ・日付、時刻 日付関数や書式 ・ほぼすべて変更が必要 一部互換動作に対応 ・条件分岐関数 nvlなど 対応 ・トランザクション内のROLLBACK挙動 ・対応不可 Oracle互換モードを選択可能 ・FROM句内のサブクエリで別名不要 ・FROM句内サブクエリの別名必須 対応 ・集合演算子 minus ・集合演算子 except 対応 ・NULLと空文字の区別がない ・対応不可 一部互換動作を設定可能 ・ROWNUM ・MERGE文 ・oidまたはROWNUMで対応(制限あり) ・INSERT ・・・ON CONFRICT
  20. 20. ストアド・プログラムの修正 PL/SQLのプロシージャ、ファンクション、パッケージ すべてPL/pgSQLファンクションで書き換え 実は公式のマニュアルに対応が書かれている  https://www.postgresql.jp/document/current/html/plpgsql- porting.html EDB PostgresならOracle互換のPL/SQLを使用可能 Japan PostgreSQL User's Group 20 全面書き換えが必要なので覚悟する プロシージャの変換方針 ーーーーーーーーーーー ファンクション内でトランザクション制御が不可 ・トランザクション制御をアプリケーション側で実装し、 ファンクション内のトランザクション制御を排除 ・プロシージャ内でのトランザクション制御が必須で なければ、そのままファンクション化 (その場合の構文は比較的似ている) パッケージの変換方針 ーーーーーーーーーー 処理をファンクションで代替し、スキーマでまとめる スキーマ名.ファンクション とすることで、 パッケージ名.サブプログラム と同じように呼び出す ことができる。 パッケージ内で保持される定数・変数の考慮が必要 ・パッケージ定数:一時テーブルに格納 ・パッケージ変数:ファンクションで代替
  21. 21. PostgreSQLへの移行入門 Ora2Pgの使用方法 困った時は Japan PostgreSQL User's Group 21 異なるデータベースからPostgreSQLへ  ポスグレどれぐらい使えるの?  移行の全体像と細部をつかむ  とにかく移行してみる 目次
  22. 22. PostgreSQLへの移行入門 Japan PostgreSQL User's Group 22 異なるデータベースからPostgreSQLへ このネタと連動して投稿した二つの記事で、PostgreSQLを触った事の無い方でも、 とりあえず環境構築~移行のとっかかり的なステップまでを体験できます。 ・CentOS 7上でのPostgreSQL構築手順(RPM編) ・Ora2Pgでやってみよう!テーブル定義移行編
  23. 23. PostgreSQLへの移行入門 コミュニティ Slack http://tinyurl.com/pgsql-slackin 2015年頃から アクティブな人数も結構増えてきて、いろいろ なバックグラウンドの方が発言してくれます。 日本PostgreSQLユーザ会 メーリングリスト PostgreSQLの直接的な質問は、昔ながらのMLでもかなり詳細 なやりとりが行われていることがあります。 サービス提供企業 サポート提供社は10社前後あると思われる • http://lets.postgresql.jp/documents/tutorial/UserSurvey/Pos tgresql_Usage_Report_2#commercial-support データベース移行サービス 「Postgres Oracle 移行」などで検索 Japan PostgreSQL User's Group 23 困った時は
  24. 24. PostgreSQLへの移行入門 とりあえずSlackに参加してみては?! Slack http://tinyurl.com/pgsql-slackin Japan PostgreSQL User's Group 24 困った時は
  25. 25. PGConf.Asia 2016 Japan PostgreSQL User's Group 25 アジア最大のPostgreSQL国際カンファレンスを日本で 日時 2016年12月2日(金)、12月3日(土) Webサイト http://www.pgconf.asia/JP/ メインセッション ①トップ開発者が語る PostgreSQL最新情報 ②世界最大のB2Bマーケット プレイス「Alibaba」の事例 多岐にわたるセッションを企画中 国内/海外事例 性能や運用の話 コミュニティ関連 他DBからの移行 新機能や拡張の 開発現場から 初級者向け チュートリアル

×