Soumettre la recherche
Mettre en ligne
MySQLからPostgreSQLへのマイグレーションのハマリ所
•
6 j'aime
•
11,943 vues
Makoto Kaga
Suivre
PostgreSQL Conference 2012でのスライド
Lire moins
Lire la suite
Technologie
Design
Signaler
Partager
Signaler
Partager
1 sur 23
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Shinya Sugiyama
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
Takuya Takaseki
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
Recommandé
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Shinya Sugiyama
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
Takuya Takaseki
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
sairoutine
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
Contenu connexe
Tendances
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
sairoutine
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Tendances
(20)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Similaire à MySQLからPostgreSQLへのマイグレーションのハマリ所
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
Kazuki Takai
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
civicpg
Yesod(at FPM2012)
Yesod(at FPM2012)
Seizan Shimazaki
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
Sotaro Kimura
Dat009 クラウドでビック
Dat009 クラウドでビック
Tech Summit 2016
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
Firefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
Oshitari_kochi
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
Yasuhiro Araki, Ph.D
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
Qlik ReplicateでApache Kafkaをターゲットとして使用する
Qlik ReplicateでApache Kafkaをターゲットとして使用する
QlikPresalesJapan
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_
Tech Summit 2016
WordPress アジュール部 ハンズオン
WordPress アジュール部 ハンズオン
Masaki Takeda
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
Similaire à MySQLからPostgreSQLへのマイグレーションのハマリ所
(20)
PostgreSQL10徹底解説
PostgreSQL10徹底解説
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
Yesod(at FPM2012)
Yesod(at FPM2012)
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
Dat009 クラウドでビック
Dat009 クラウドでビック
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Firefoxの開発プロセス
Firefoxの開発プロセス
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Qlik ReplicateでApache Kafkaをターゲットとして使用する
Qlik ReplicateでApache Kafkaをターゲットとして使用する
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_
WordPress アジュール部 ハンズオン
WordPress アジュール部 ハンズオン
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
Plus de Makoto Kaga
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
Makoto Kaga
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
Makoto Kaga
配信現場のアレコレなければ作る!
配信現場のアレコレなければ作る!
Makoto Kaga
電動雲台無線化への道
電動雲台無線化への道
Makoto Kaga
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
Makoto Kaga
Plagger。みんなで使えば恐くない。
Plagger。みんなで使えば恐くない。
Makoto Kaga
Plus de Makoto Kaga
(6)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
配信現場のアレコレなければ作る!
配信現場のアレコレなければ作る!
電動雲台無線化への道
電動雲台無線化への道
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
Plagger。みんなで使えば恐くない。
Plagger。みんなで使えば恐くない。
Dernier
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Dernier
(12)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
MySQLからPostgreSQLへのマイグレーションのハマリ所
1.
MySQLからPostgreSQLへの マイグレーションのハマリ所 日本PostgreSQLユーザ会 加賀 誠人 @makotokaga 2012年2月24日 PostgreSQL
Conference 2012
2.
アジェンダ • ゴール • 情報の収集 •
テーブル定義の移行 • データの移行 • 移行におけるハマりどころ • まとめ
3.
講演者について • 加賀 誠人
(かが まこと) • @makotokaga • フリーランスWebエンジニア • 日本PostgreSQLユーザ会理事 • 本日の基調講演のUstream担当 • 物欲系Blogも書いています • http://blog.project92.com
4.
ゴール • MySQL+PHPで稼働していたとある
Webアプリケーションを、PostgreSQL +PHPに移行する •ターゲットとなった旧システム • MySQL 5.0.x (InnoDB) • PHP 5.1.x •新システム • PostgreSQL 9.0.x • PHP 5.3.x
5.
どこから手をつけるか? • まずは、情報収集 •
Converting from other Databases to PostgreSQL •http://wiki.postgresql.org/wiki/ Converting_from_other_Databases_to_Post greSQL •「MySQL PostgreSQL migration」で検索
6.
Converting from other Databases
to PostgreSQL
7.
dumpしてrestoreできるか? • MySQLとPostgreSQLでは、型の違
い、SQLの表記の違いがあるので、変 換は必須 •いくつか既存の変換ツールが公開さ れている
8.
型の違い • 多くのデータ型は、双方に存在するが
名前が違うなど、異なっている • バイナリ・ラージ・オブジェクトなど は扱い方も異なる • BLOG v.s. BYTEA
9.
SERIAL型 • MySQLでは、auto_increment • PostgreSQLでは、SEQUENCEが作られ、
default値として「nextval()」が設定される • 直前に使われた値を調べる方法が違う • MySQLにはAPIで提供される mysql_insert_id() があり、直前に使われ た値が簡単に取得できる • PostgreSQLでは、currval()で得られる が、SEQUENCEの名前を知っている必要 がある
10.
SQL文の表記の違い • コメント行の開始文字列の違い •
MySQL : "#" • PostgreSQLは認識しない • PostgreSQL : "--" • MySQLは認識する • 引用符の違い • MySQLは「"」も「'」も使える • 識別子の場合もMySQLは「`」 • などなど……
11.
テーブル定義の移行 • 今回選択した方法 •
Mac OS X用ER図作成ツール「SQL Editor」を使用 • MySQLのテーブル定義を読込み • ターゲットをPostgreSQLに変更 • 一部データ型を修正 • SQLをエクスポート(し、さらに修 正) • PostgreSQLに読み込み
12.
SQLEditorについて • Mac OS
X版のER図作成ツール • http://www.malcolmhardie.com/sqleditor/ • MalcolmHardie Solutions社製 • 79USD
13.
データの移行① • 移行前後、双方のDBに接続し、データを
移行するPHPのプログラムを作成し移行 した • 移行先のPostgreSQLのシステムカタ ログから、移行後のテーブル定義を取得 • MySQLのテーブルを順次SELECT • 各カラムの型に応じて、必要な変換をし て、PostgreSQL側にINSERT • NULL値を適切に処理しないとハマる
14.
データの移行② ② 各テーブルの
① pg_catalogから、変換後の データを順次取得 変換プログラム テーブル定義を取得 (PHPで記述) ③ データを変換して 順次投入 MySQL PostgreSQL
15.
データ移行自体の問題 • 移行そのものに相当の時間を要するた
め、一定の時間止められないサービス だと辛い • 実データで変換を検証する必要がある が、検証そのものにも時間がかかる
16.
移行でのハマりどころ① • timestamp型のふるまい •
MySQLでは「0000-00-00 00:00:00」が許容される • PostgreSQLでは、上記は投入でき ない
17.
移行でのハマりどころ② • CHARACTER(n)型の違い •
長さを指定した場合、n文字(バイト) の長さになるまで、空白が追加される • char(4)のカラムに「foo」が入って いた場合に、PHPからアクセスする と以下の値が取得される •MySQL : "foo" •PostgreSQL : "foo "
18.
移行でのハマりどころ②−2 • psqlでやると…… test=# SELECT
'"' || test || '"' from bar; ?column? ---------- "12" "123" "1" "1234" (4 rows)
19.
移行でのハマりどころ③ • BOOLEANの値の違い •
MySQL: "1" or "0" • 実体は tinyint(1) • "TRUE" or "FALSE"で比較はできる • if ($results) { ... } • PostgreSQL: "t" or "f" • if ($results === 't') { ... }
20.
移行でのハマりどころ④ • ORDER BY句のないクエリー
• PostgreSQLはもちろん、SQLで は、ORDER BY句がない場合は、取 得されるレコードの順番は不定 • MySQLでは、レコードの投入順に出 力されるよう •当然保証されているわけではない?
21.
移行でのハマりどころ⑤ • ORDER BY句でのNULLの扱い
• MySQLは、NULLが先頭に • PostgreSQLは、NULLは末尾に
22.
ORマッパがあっても • 今回ターゲットとなったシステムは、
symfony 0.6.3を利用しており、OR マッパとしてPropelを採用 •謳い文句上は設定を変えれば、簡単 にDBMSの変更が可能というが…… • 実際にはORマッパでは吸収しきれ ていない • アプリの書き換えは避けられない
23.
まとめ • マイグレーションは可能だが、高コスト •
ここで紹介しきれてない非互換性も多 い • 中途半端に動いてしまうものもあるの で、仕様が不明確なシステムの移行だ と危険をともなう • PostgreSQLでないといけない理由 や利点とのトレードオフで判断したい •GIS、ライセンス、などなど
Télécharger maintenant