Suche senden
Hochladen
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
•
8 gefällt mir
•
2,611 views
学 松崎
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 52
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
JAWS-UG大分 第2回勉強会「大規模AWSインフラから セキュアな業務システムまで まるごと支えるAWS」
JAWS-UG大分 第2回勉強会「大規模AWSインフラから セキュアな業務システムまで まるごと支えるAWS」
真吾 吉田
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
Serverworks Co.,Ltd.
AWS CAF & Well-Architected Framework
AWS CAF & Well-Architected Framework
真吾 吉田
20160608 JAWS-UG磐田
20160608 JAWS-UG磐田
Serverworks Co.,Ltd.
[JAWS DAYS 2019 /Open Mic]AWSの運用最適化のためにNHN テコラスが提案していること
[JAWS DAYS 2019 /Open Mic]AWSの運用最適化のためにNHN テコラスが提案していること
NHN テコラス株式会社
gumiサーバー監視とawscli
gumiサーバー監視とawscli
Yu Nishimura
ヘプタゴンの10大ニュースで見る東北のクラウド事情
ヘプタゴンの10大ニュースで見る東北のクラウド事情
Takuya Tachibana
Serverless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニング
真吾 吉田
Empfohlen
JAWS-UG大分 第2回勉強会「大規模AWSインフラから セキュアな業務システムまで まるごと支えるAWS」
JAWS-UG大分 第2回勉強会「大規模AWSインフラから セキュアな業務システムまで まるごと支えるAWS」
真吾 吉田
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
Serverworks Co.,Ltd.
AWS CAF & Well-Architected Framework
AWS CAF & Well-Architected Framework
真吾 吉田
20160608 JAWS-UG磐田
20160608 JAWS-UG磐田
Serverworks Co.,Ltd.
[JAWS DAYS 2019 /Open Mic]AWSの運用最適化のためにNHN テコラスが提案していること
[JAWS DAYS 2019 /Open Mic]AWSの運用最適化のためにNHN テコラスが提案していること
NHN テコラス株式会社
gumiサーバー監視とawscli
gumiサーバー監視とawscli
Yu Nishimura
ヘプタゴンの10大ニュースで見る東北のクラウド事情
ヘプタゴンの10大ニュースで見る東北のクラウド事情
Takuya Tachibana
Serverless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニング
真吾 吉田
Serverless Meetup Osaka #2 Intro
Serverless Meetup Osaka #2 Intro
真吾 吉田
クラウドによって 変わった未来
クラウドによって 変わった未来
Mitsuhiro Yamashita
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
真吾 吉田
フロントエンドエンジニアとしてAWS re:invent に行ってきました
フロントエンドエンジニアとしてAWS re:invent に行ってきました
Toshiro Shimizu
Cloudnative online-2021-stepfunction
Cloudnative online-2021-stepfunction
kota tomimatsu
Anchors Aweigh!! - re:Invent報告@re:Port 2016
Anchors Aweigh!! - re:Invent報告@re:Port 2016
真吾 吉田
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
Keisuke Kadoyama
20170622 Moved to Azure PaaS
20170622 Moved to Azure PaaS
康平 秋山
AWS認定資格について
AWS認定資格について
晋也 古渡
20150901 ops jaws_araya_v2
20150901 ops jaws_araya_v2
Mitsuru Araya
AWS Serverless++
AWS Serverless++
真吾 吉田
まる見え、AWS!! - JAWS UG 2015 -
まる見え、AWS!! - JAWS UG 2015 -
Tomoaki Sakatoku
May the FaaS be with us!!
May the FaaS be with us!!
真吾 吉田
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
Mitsuhiro Yamashita
AWS認定クラウド プラクティショナー って何?
AWS認定クラウド プラクティショナー って何?
Mitsuhiro Yamashita
Questetra meet up_swx
Questetra meet up_swx
Serverworks Co.,Ltd.
Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2
Serverworks Co.,Ltd.
20161212 岩本
20161212 岩本
Takahisa Iwamoto
Cloud days
Cloud days
Tomoya Ishida
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
学 松崎
Fukuokaphp vol12 talk_20140225
Fukuokaphp vol12 talk_20140225
学 松崎
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
Weitere ähnliche Inhalte
Was ist angesagt?
Serverless Meetup Osaka #2 Intro
Serverless Meetup Osaka #2 Intro
真吾 吉田
クラウドによって 変わった未来
クラウドによって 変わった未来
Mitsuhiro Yamashita
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
真吾 吉田
フロントエンドエンジニアとしてAWS re:invent に行ってきました
フロントエンドエンジニアとしてAWS re:invent に行ってきました
Toshiro Shimizu
Cloudnative online-2021-stepfunction
Cloudnative online-2021-stepfunction
kota tomimatsu
Anchors Aweigh!! - re:Invent報告@re:Port 2016
Anchors Aweigh!! - re:Invent報告@re:Port 2016
真吾 吉田
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
Keisuke Kadoyama
20170622 Moved to Azure PaaS
20170622 Moved to Azure PaaS
康平 秋山
AWS認定資格について
AWS認定資格について
晋也 古渡
20150901 ops jaws_araya_v2
20150901 ops jaws_araya_v2
Mitsuru Araya
AWS Serverless++
AWS Serverless++
真吾 吉田
まる見え、AWS!! - JAWS UG 2015 -
まる見え、AWS!! - JAWS UG 2015 -
Tomoaki Sakatoku
May the FaaS be with us!!
May the FaaS be with us!!
真吾 吉田
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
Mitsuhiro Yamashita
AWS認定クラウド プラクティショナー って何?
AWS認定クラウド プラクティショナー って何?
Mitsuhiro Yamashita
Questetra meet up_swx
Questetra meet up_swx
Serverworks Co.,Ltd.
Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2
Serverworks Co.,Ltd.
20161212 岩本
20161212 岩本
Takahisa Iwamoto
Cloud days
Cloud days
Tomoya Ishida
Was ist angesagt?
(19)
Serverless Meetup Osaka #2 Intro
Serverless Meetup Osaka #2 Intro
クラウドによって 変わった未来
クラウドによって 変わった未来
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
フロントエンドエンジニアとしてAWS re:invent に行ってきました
フロントエンドエンジニアとしてAWS re:invent に行ってきました
Cloudnative online-2021-stepfunction
Cloudnative online-2021-stepfunction
Anchors Aweigh!! - re:Invent報告@re:Port 2016
Anchors Aweigh!! - re:Invent報告@re:Port 2016
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
20170622 Moved to Azure PaaS
20170622 Moved to Azure PaaS
AWS認定資格について
AWS認定資格について
20150901 ops jaws_araya_v2
20150901 ops jaws_araya_v2
AWS Serverless++
AWS Serverless++
まる見え、AWS!! - JAWS UG 2015 -
まる見え、AWS!! - JAWS UG 2015 -
May the FaaS be with us!!
May the FaaS be with us!!
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
AWS認定クラウド プラクティショナー って何?
AWS認定クラウド プラクティショナー って何?
Questetra meet up_swx
Questetra meet up_swx
Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2
20161212 岩本
20161212 岩本
Cloud days
Cloud days
Andere mochten auch
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
学 松崎
Fukuokaphp vol12 talk_20140225
Fukuokaphp vol12 talk_20140225
学 松崎
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
学 松崎
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
学 松崎
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
学 松崎
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
学 松崎
Andere mochten auch
(8)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Fukuokaphp vol12 talk_20140225
Fukuokaphp vol12 talk_20140225
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Ähnlich wie クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
Askusa on AWS
Askusa on AWS
Shingo Furuyama
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
Amazon Web Services Japan
データ分析基盤構築のポイントと関連クラスメソッドサービスの紹介
データ分析基盤構築のポイントと関連クラスメソッドサービスの紹介
Yosuke Katsuki
2015年12月 Amazon RDS for Aurora セミナー in 関西 「Aurora検証のご紹介」
2015年12月 Amazon RDS for Aurora セミナー in 関西 「Aurora検証のご紹介」
Serverworks Co.,Ltd.
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
真吾 吉田
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
真吾 吉田
○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて
○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて
mokomoko9
Plone + AWS at Plone Symposium tokyo 2015
Plone + AWS at Plone Symposium tokyo 2015
Manabu Terada
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
Amazon Web Services Japan
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
真吾 吉田
AWS市場動向と求められる人材、その育成方法について
AWS市場動向と求められる人材、その育成方法について
Trainocate Japan, Ltd.
CloudFormation で SAP
CloudFormation で SAP
iret Inc.
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
真吾 吉田
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
Naoyuki Yamada
Askusa on aws
Askusa on aws
Shingo Furuyama
Askusa on aws
Askusa on aws
Shingo Furuyama
JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk
真吾 吉田
拡がるクラウドの利用用途 - AWSの強みとクラウド活用最新事例 -
拡がるクラウドの利用用途 - AWSの強みとクラウド活用最新事例 -
Yasuhiro Horiuchi
Ähnlich wie クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
(20)
Askusa on AWS
Askusa on AWS
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
Blackbelt Online Serminar Parse.comからAWSへのモバイルアプリの移行
データ分析基盤構築のポイントと関連クラスメソッドサービスの紹介
データ分析基盤構築のポイントと関連クラスメソッドサービスの紹介
2015年12月 Amazon RDS for Aurora セミナー in 関西 「Aurora検証のご紹介」
2015年12月 Amazon RDS for Aurora セミナー in 関西 「Aurora検証のご紹介」
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
20131209_buildinsidermeetup
20131209_buildinsidermeetup
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて
○○をAWSで作るにはどうすればいい? ~ 構築例とアーキテクチャ図を添えて
Plone + AWS at Plone Symposium tokyo 2015
Plone + AWS at Plone Symposium tokyo 2015
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
AWS市場動向と求められる人材、その育成方法について
AWS市場動向と求められる人材、その育成方法について
CloudFormation で SAP
CloudFormation で SAP
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
Askusa on aws
Askusa on aws
Askusa on aws
Askusa on aws
JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk
拡がるクラウドの利用用途 - AWSの強みとクラウド活用最新事例 -
拡がるクラウドの利用用途 - AWSの強みとクラウド活用最新事例 -
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
1.
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~ 第7回PostgreSQLエンタープライズ・コンソーシアムセミナー in
大阪 2014/02/07
2.
自己紹介 n 名前: 松崎 学 n 所属:
株式会社キャム n 職業:ソフトウェアエンジニア (プログラマ、インフラ設計・構築・運用管理) n データベース歴:Oracle 16年 PostgreSQL 3年 MySQLも少しだけ
3.
株式会社キャムについて n 事業内容 SaaS型統合基幹業務システム「CAM MACS」 の開発および、サービス提供 n AWSテクノロジーパートナー n 沿革 1993年 6月 1日 設立 1999年 4月 1日 C/S型 CAM
MACS リリース 2007年 4月 1日 SaaS型統合基幹業務システム CAM MACS 開発着手 2007年11月 1日 SaaS型統合基幹業務システム CAM MACS ローンチ
4.
弊社サービス「CAM MACS」について n SaaS型 CAM
MACSの導入実績 34社 (2014年2月現在) n 導入実績業種 製造業、卸売業、小売業、飲食業、 施工・工事・メンテナンス業、サービス業、 EC・通販 など n サービス内容 経費精算、購買債務、販売債権、製造、 物流・在庫、原価計算、財務会計、管理会計、 工事・保守管理、CRM、店舗管理、EC受注管理
5.
弊社サービス基盤の歴史
6.
第1世代 (2007) ※まもなく移行完了 インフラ 国内データセンター OS RHEL5
+ CentOS5 Webサーバ Apache APサーバ Tomcat DB Oracle 10g 言語 Java フレームワーク Seasar2 (Teeda + S2Dao) その他 DBサーバ用共有ストレージ×2
7.
第1世代DB構成図 n 定期的に待機系ストレージにコールドバックアップ n 障害発生時は手動リカバリ コールドバックアップ + Redoログ
+ アーカイブログでロールフォワード
8.
第2世代 (2010) ※現在は使っていない インフラ 国内データセンター OS Ubuntu10.10 Webサーバ Apache APサーバ Tomcat DB PostgreSQL
9.0 言語 Java フレームワーク Seasar2 (Teeda + S2Dao) その他 Pacamaker(Ubuntu標準パッケージ) + pgpool-ha + pgpool-II + Orafce ※黄色は前世代からの変更点
9.
第2世代DB構成図 n PostgreSQL9.0には非同期レプリケーションしかなかった 同期レプリケーションが必要だったのでpgpool-IIを導入 レプリケーションモードで運用 n PostgreSQLはpacemakerの管理外とした pgpool-IIと仮想IPだけpacemakerで管理
10.
第2世代DB構成図 (pgpool-II障害発生時) n 仮想IPとpgpool-IIがフェイルオーバー
11.
第2世代DB構成図 (PostgreSQL障害発生時) n 障害が発生したPostgreSQLがpgpool-IIから切り離されて 縮退運転となる
12.
第3世代 (2011) ※
現在は使っていない インフラ 国内データセンター OS Scientific Linux 6 Webサーバ Apache APサーバ Tomcat DB PostgreSQL 9.1 言語 Java フレームワーク Seasar2 (Teeda + S2Dao) その他 Pacamaker(Linux-HA Japan提供パッケージ) + Orafce ※黄色は前世代からの変更点
13.
第3世代DB構成図 n PostgreSQL9.1で同期レプリケーションが 追加になったので、pgpool-IIを使わない構成に変更した 今後PostgreSQLをバージョンアップしていく事を 考えると、出来るだけ標準機能のみで構成したかった
14.
第3世代DB構成図 (マスタ障害発生時) n フェイルオーバー
15.
第3世代DB構成図 (スレーブ障害発生時) n スレーブが切り離されて、 非同期レプリケーションモードになる
16.
第4世代 (2013) インフラ AWS OS Amazon Linux Webサーバ Apache APサーバ Tomcat DB PostgreSQL
9.1 言語 Java フレームワーク Seasar2 (Teeda + S2Dao) その他 Orafce ※黄色は前世代からの変更点
17.
第5世代 (2013) インフラ AWS OS Amazon Linux Webサーバ Apache APサーバ GlassFish
3.1.2.2 DB PostgreSQL 9.2 言語 Java フレームワーク JavaEE6 その他 なし ※黄色は前世代からの変更点
18.
第4世代、第5世代DB構成図 n CDP: Routing-Based HAパターン http://aws.clouddesignpattern.org/index.php/CDP:Routing-Based_HA%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 n 弊社が使用しているインスタンスタイプ マスタ:
C3.2xlarge スレーブ: C3.large
19.
PostgreSQLに 移行した理由
20.
コスト面の理由 n 弊社サービスの利用料金は、コストの積み上げでは決め ていない ソフトウェア費用、ハードウェア費用、保守費用などの インフラに関わる費用は全て弊社が負担している コストを抑えないと利益が出せない
21.
機能面の理由 (1) n レプリケーション機能の存在 Oracle10g Standard
Edition Oneを使用していたので、 レプリケーションがない コールドバックアップに掛かる時間が伸びていた 障害発生時のリカバリにも数時間かかる見込みだった 出来るだけ落ちないサーバ構成(例えばホットスワップ HDD、共有ストレージ、FTサーバなど)にすると コストが高い上に、100%無停止は難しい サーバは壊れる事を大前提とし、 出来るだけ速く自動フェールオーバーする構成に変更
22.
機能面の理由 (2) n パーティショニング機能の存在 Oracle10g Standard
Edition Oneを使用していたので、 パーティショニング機能がない 増え続けるデータに対して対応が必要だった
23.
PostgreSQLではなく MySQLという 選択肢もあったが
24.
MySQLにしなかった理由 n PostgreSQLの方がOracleとのSQL互換性が高く、 ソースの改修量が少ない n 当時のMySQLはNested Loop JOINしか無かった ※Nested
Loop JOINが遅いという訳ではありません (5.6からBKA JOINが追加された) n 当時のMySQLは4バイトUTF-8を サポートしていなかった (5.5からサポートされた)
25.
PostgreSQL移行提案に対する 社内メンバーの反応
26.
n 安定性 ・導入実績は? ・バグでデータ消えたりしない? ・落ちたりしない? n 性能 ・Oracleと比べてパフォーマンスは?
27.
安定性に対する不安を解決するために行った事 n Let’s Postgresの事例ページを紹介 http://lets.postgresql.jp/documents/case n 「日本PostgreSQLユーザ会 九州支部」の勉強会に 参加して情報収集
28.
性能に対する不安を解決するために行った事 n アプリケーションの一部の機能をPostgreSQLで動く ように改修してOracleと比較 どちらが早いかは一概には言えないと思います 弊社のアプリケーションの場合、 Oracleの方が早いパターン、PostgreSQLの方が 早いパターンの両方がありました ・Oracleは細かい事を気にせずSQLを書いても ある程度早い ・PostgreSQLはきちんと書けば早い という印象です
29.
実際に行った SQL改修作業について
30.
SQL改修の方針 n 完全に移行が完了するまではアプリケーションは OracleでもPostgreSQLでも動く状態を維持する n 同じSQLで両方のデータベースで動くのが望ましい n Orafce(Oracle互換関数拡張)を導入して改修量を減らす ※2011/05を最後にバージョンアップしていないので 今後は出来れば使わない方がよいかも知れません n 必要に応じてデータベースの差異を吸収する関数を作る n どうしても同じSQLにする事が出来ない場合は それぞれのデータベース毎にSQLを分けて作る
31.
改修の流れ n SQLを改修する前にDaoのユニットテストを 全て書く ・仕様化テスト(Characterization Test) ※コードの振る舞いを知るためのテスト http://devtesting.jp/pekema/?0002%2FTddNextStep n SQLの改修 OracleとPostgreSQLの両方でユニットテストが Greenな状態になるように改修する
32.
SQL改修のパターン
33.
n 基本的な型エラー (table01.flgがvarcharである場合の例) select col1 from table01 where
flg = 0 ↓ select col1 from table01 where flg = ‘0’ OracleでもPostgreSQLでも動きます
34.
n rownum → row_number()
over() select rownum , col1 from table01 order by col1 ↓ select row_number() over (order by col1) , col1 from table01 OracleでもPostgreSQLでも動きます
35.
n 副問合せに対して別名が必要 select col1 , col2 from
(select col1, col2 from table01) t01; OracleでもPostgreSQLでも動きます
36.
n DECODE関数 → CASE式 Orafceを導入したので、改修不要な気がしたが、 CASE式に書き換える事にした ※decode()に関する注意 http://orafce.projects.pgfoundry.org/index-ja.html#decode select
case when col1 = ‘0’ then ‘A‘ when col1 = ‘1’ then ‘B‘ else ‘Z‘ end col1 from table01 OracleでもPostgreSQLでも動きます
37.
n プロシージャはJavaで再実装 2007年の開発開始当初からOracle以外への移行は 考えていたので、 (その時点ではPostgreSQLに移行する予定は 全くありませんでしたが) プロシージャは一切作らない予定だったが、 スケジュールの関係で一部だけは プロシージャを作成してしまっていた Javaで再実装するとパフォーマンスが落ちてしまうが、 サーバのスケールアップで対応
38.
改修作業中にわかった事
39.
n PostgreSQLではNullと空文字列が別物 n OracleのDATE型は秒までしか保持できないが、 PostgreSQLのtimestampはマイクロ秒まで保持 (ちなみにJavaのjava.util.Dateはミリ秒まで保持) n ||でnullを結合すると結果がnullになる 弊社では関数を作って対応したが、 PostgreSQL9.1以降でしか動かさないのであれば、 CONCAT関数の利用がおすすめ
40.
n unknown型の型変換エラーが発生 CASTを追加して対応 ( JDBC固有の問題?psqlではエラーにならない) create cast
(unknown as varchar) with inout as implicit; create cast (unknown as text) with inout as implicit; create cast (unknown as timestamp without time zone) with inout as implicit;
41.
データ移行
42.
n まず、PostgreSQLに全てのオブジェクトを CREATEしておく n OracleからCSVファイルを出力し、PostgreSQLに取込む n シーケンスのcurrval値をデータディクショナリから取得 して、PostgreSQL側に反映 select 'select setval('''
|| sequence_name || ''', ' || last_number || ', false);' from user_sequences where last_number > 1 ↓ select setval('SEQXXX', 9999, false);
43.
運用管理
44.
n ZabbixでOS自体のリソース監視と、 PostgreSQLの死活監視 n 稼働統計情報を取得 http://lets.postgresql.jp/documents/technical/statistics/1 n 今後、pg_monzを導入する予定 PostgreSQLのリソースの可視化
45.
PostgreSQLに移行して良かったと思う事を 弊社開発メンバーに聞きました
46.
便利な機能や関数が色々ある n テーブル継承 共通的なカラムの定義 n n ILIKE 大文字と小文字を同一視するLIKE検索 GENERATE_SERIES関数 UNION不要でレコード生成 n 配列データ型 n 他にも色々あるので、使いこなすと生産性や パフォーマンス向上が期待出来る
47.
まとめ
48.
n Oracleから移行して3年経ちましたが、 PostgreSQLは安定性も性能も問題ありません バージョンアップの度に、性能面も機能面も より良くなっていっています
49.
お薦め書籍
50.
n 個人的に、今はコレがお薦めです PostgreSQLの内部構造まで説明されています 公式マニュアルも非常に充実していますので あわせて読みましょう
51.
弊社の事例が 何かのお役に立てれば幸いです
52.
ご清聴ありがとう ございました
Jetzt herunterladen