Suche senden
Hochladen
MySQLからPostgreSQLへのマイグレーションのハマリ所
•
6 gefällt mir
•
11,943 views
Makoto Kaga
Folgen
PostgreSQL Conference 2012でのスライド
Weniger lesen
Mehr lesen
Technologie
Design
Melden
Teilen
Melden
Teilen
1 von 23
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
Nobuyuki Sasaki
Vue.js で XSS
Vue.js で XSS
tobaru_yuta
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Empfohlen
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
Tetsutaro Watanabe
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
Nobuyuki Sasaki
Vue.js で XSS
Vue.js で XSS
tobaru_yuta
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
100%Kotlin ORM Ktormを試してみた
100%Kotlin ORM Ktormを試してみた
Keita Tsukamoto
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Shinya Sugiyama
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
Weitere ähnliche Inhalte
Was ist angesagt?
100%Kotlin ORM Ktormを試してみた
100%Kotlin ORM Ktormを試してみた
Keita Tsukamoto
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Shinya Sugiyama
Was ist angesagt?
(20)
100%Kotlin ORM Ktormを試してみた
100%Kotlin ORM Ktormを試してみた
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Vacuum徹底解説
Vacuum徹底解説
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
Ähnlich wie 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
Ähnlich wie 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年度 若手技術者向け講座 実行計画
Mehr von Makoto Kaga
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
Makoto Kaga
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
Makoto Kaga
配信現場のアレコレなければ作る!
配信現場のアレコレなければ作る!
Makoto Kaga
電動雲台無線化への道
電動雲台無線化への道
Makoto Kaga
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
Makoto Kaga
Plagger。みんなで使えば恐くない。
Plagger。みんなで使えば恐くない。
Makoto Kaga
Mehr von Makoto Kaga
(6)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)【改訂版】
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
ワンオペ向け! フットペダルでのスイッチング装置を試作してみた(某プロダクトのマネっこ)
配信現場のアレコレなければ作る!
配信現場のアレコレなければ作る!
電動雲台無線化への道
電動雲台無線化への道
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
Plagger。みんなで使えば恐くない。
Plagger。みんなで使えば恐くない。
Kürzlich hochgeladen
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 を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Kürzlich hochgeladen
(10)
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 を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
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、ライセンス、などなど
Jetzt herunterladen