トランプ兵の記憶と記録

普通のアプリケーションエンジニアの備忘録

MySQLと(OracleとPostgresSQLと)私の12年間

この記事は Calendar for MySQL | Advent Calendar 2021 - Qiita の23日目です。

Happy holidays!

去年は Azure Database for MySQLに奮闘した話を書きました。 テクニカルなお話、やってみた談が聞きたい方は去年の記事をお勧めします。 こちらもぜひ読んでやってください。 qiita.com qiita.com

2019年から2020年の丸2年は新規サービス開発、運用、継続開発に費やし、実は去年のアドベントカレンダーはある仕事の最終出社日に公開したのでした。

2021年の仕事は前半企画職でプロトタイピング開発だったのでRDBに関わらずでした。

2021年後半はAuroraを使っているサービス2件に関わってますが、残念ながらMySQL自体の深淵には関わってません。

そこで、今年は社会人12年目の節目なので、MySQLと私の関わりを語ることにしました。 途中でOracleとPostgresも出てきますし、技術色はあまりないですが、アドベントカレンダーの『MySQLについてならなんでもOKです』に甘えました。

2008年11月:初めましてMySQL

新卒で勤めていた会社の内定者研修でJSP/Servlet/MySQLの勉強があり、Webアプリ3本ほどの開発を入社前にやりました。 卒業研究と合わせて苦悩していました。

大学は数学系研究室で代数はバッチリだったので、自分含め周囲の就職内定者はRDBSQLは余裕でマスターしてました。問題は言語だ。ここでJavaを選んでしまった私は今でも呪われているかもしれない。

当時はMySQL 5.1でした。

データベースの研修は、MySQLをzipダウンロードしてきてパスを通してmysqldとmysqlコマンドプロンプトで起動するところから始まり、テーブル設計、SQLJDBCまでやりました、結構当時としては詰め詰めな教育だったと思います。

個人ではオライリーのHead Firstシリーズを読んでました。SQL、データベース設計、DBAの入門がしっかり書いてあります。 www.oreilly.co.jp

2009年:ほぼ社内ニート生活

2009年4月に就職しましたが、リーマンショックで新入社員研修後はある程度自由に社内ニートや社内業務をしてました。

社内研修はOracle 9gとMySQL 5.1でした。社内アプリはGoogle BigQueryだったりPostgresSQLだったり好き好きでした。 この時期に作った広報用ブログは我々同期の好みでMySQLになりました。

2010年:初めましてERMaster

2009年の年末から2010年1月くらいまで火消しプロジェクトに常駐してました。そのあとは2010年夏まで伸び伸び社内ニートでした。 仕事はOracleでしたが、好きにしていい社内の検証開発はMySQLやPostgresSQLでした。

OracleMySQLはなんか両極端に見えますが、社内にMySQL得意な人がいたので、RDBMySQLを使う文化がありました。それ以外も社内はSpringなどOSS利用が盛んでした。

社内のMySQL得意な人と有志が ERMaster というER図作成ツールを出してました。 ERMasterの初期バージョンはMySQL以外で動いた記憶がありません。仕方なく私は A5:SQL Mk-2 - フリーのSQLクライアント/ER図作成ソフト (松原正和) を使うことにして現在に至ります。

そんなERMasterは jfluteさん はじめ色々な方がforkしてくださっていて感慨深いです。こんな有名になるとは当時は思いもしませんでした。

2010年〜2013年

この頃はあまりMySQLに触れていません。

仕事の最初の2年ほどは欧米向けサービスでOracle 11gを使っていて、トルコ語が文字化けして困ったりしてました。

その後はメインはOracleだけど、セッション管理だけスケーラビリティとコスト削減のためMySQLという現場があり、そこで少しMySQLに関わったくらいです。

2012年の後半くらいからは、色々なきっかけで製品営業に関わるようになり、プロトタイピングやPoCには個人でMySQLを使っていました。 セットアップが楽なので何かあったらMySQLが鉄板でした。

この頃にOracleはギブアップしました。 2010年ごろの会社の目標設定でOracle DBAを取ろうとしましたが、Oracleを勉強するうちに『これLinuxそのものじゃんキリない』と悟ってDBAレベルの理解は挫折しました。 最近はもうSQLポケットリファレンスも出なくなりましたね。今でもOracleで動くSQL書けるかなあ…?

[改訂第4版]SQLポケットリファレンス | 朝井 淳 |本 | 通販 | Amazon

2013年〜2014年前半

自分が知りたいことを極めると、IPA試験のシステムアーキテクトが取りたいと思うようになりましたが、論文試験が面倒なのでやめました。 代わりに論文のないデータベーススペシャリストを取ることにしました。

Web+DB Pressの奥野さんの連載と、ミックさんの本を読みまくりました。 奥野さんの連載は本になったので買おうかなあ。。。 RDBとデータベース設計は勉強と実践が結果に出るので、仕事で役に立っています。

www.amazon.co.jp

www.amazon.co.jp

www.amazon.co.jp

2014年後半〜2016年前半

2014年9月にWeb系の開発会社に転職して運用部隊に配属になりました。 運用部隊はこの会社独特の組織で、今で言うところのSREに開発を兼ねる部署で、10年20年運用しているシステムを扱うのが特徴でした。あと全社的炎上ハンターもたまにやらされた。

Web系の会社なのでMySQLとPostgresSQLを多めに扱うようになり、Javaからはほぼ隠居してました。 MySQLは関係ありませんが、 この頃からJavaコミュニティの勉強会に参加するようになりました。元後輩とDBFluteフェスにも行ったのですが、その頃はまだDBFluteを実践投入していませんでした。

運用開発主体だったので、性能改善に取り組むこともあり、性能の出るSQLRDBによって全然違うことを学びました。 アルゴリズム改善、SQL改善、インデックス付与でレスポンス20分を3秒にした時は感動したなあ。

2016年後半〜2021年

2016年の前半にフラっと会社員を辞め無所属になりました。 それ以降参画OKいただける案件は、何故か軒並みMySQLです。 MySQLの腕で採用されたわけではないのですが、自分が興味を抱く方向に何故かMySQLMySQLに詳しい方がいます。

2017年春夏、当時契約していた現場で、事業ごとにEOL対策チームを置くことになりました。 とある事業部のEOL対策チームの初期計画を立てる中、MySQL 5.1からのバージョンアップの見積りもしたのだけど、どうなったのだろう。

2017年秋から2018年秋位、Struts1とSpringでウェイウェイしてました。 データベースではたまに名DBA様方にSQLレビューや設計の相談でお世話になっていました。

2018年の秋冬は、EOLしたSeasarをSpringにリプレースするおひとり様案件でアーキテクトしてました。

私の前任ベンダがS2JDBCの移行に DBFlute を使うと言っておきながら検証しなかったので、私はDBFluteってなに!から奮闘したのでした。 注文だけMySQLのread replicaから読み取る要件があったので、jfluteさんにSlackで質問に答えていただいて、Spring Boot + DBFluteで複数DataSourceを使えるようにしました。

ここまでで、ポンコツですがOSS貢献って楽しいなあと思えるようになりました。

2019年〜2020年、ある日突然プロジェクトチームでインフラに拝命されてしまい、閑古鳥サービスのMySQL 5.7なら扱えるようになりました。 本来インフラは別にアサインされた人がいたのですが、多忙で体勢を抜けてしまい私に降ってきたのでした。 勉強と実践って大事ですが、Azureに慣れてしまったのでAWSもAuroraがさっぱりわかりません。

2021年はAuroraミリ知ら状態で終わります。

今後

まだまだMySQLわからないことが多すぎるので、もう一度学び直しが必要です。自分のために数冊晒しておきます。

オライリーの馬の本はMySQLに関係ない運用ノウハウとして読みたい。読みかけ。

www.amazon.co.jp

www.amazon.co.jp

www.amazon.co.jp

データベースリライアビリティエンジニアリング ―回復力のあるデータベースシステムの設計と運用 | Laine Campbell, Charity Majors, 八木 和生 |本 | 通販 | Amazon

これも積読なので消化したい

tech.nri-net.com

今後

2022年の2月からは技術サポート職に参加します。

面接時『MySQL以外本当に経験ないんですか』と聞かれましたが、ここ数年私の向かう道ではRDBMySQLです。PostgresSQLとOracleはかなり勉強し直さないと使えないので経験なしと考えています、と答えるしかありませんでした。ぶっちゃけ私の頭ではサポート職は無理です 当面はDBAよりローコード開発やフロントエンドとバックエンドのアーキテクトが主体になりそうです。

どうなることかわかりませんが、私がエンジニアである限りMySQLとの関わりは切れそうにありません。 どこかで見かけた時には見守ってやってください。

最後までお読みいただきありがとうございました。良いお年を。