2日続いて本日もFindyイベント参加します!!
もちろんイベントレポートも書きますのでよろしくです〜🙌yoku×soudaiが語る、あなたの知らないMySQLとPostgreSQLの世界 https://t.co/fqhGNDfgUV #DB_findy
— adachin👾SRE (@adachin0817) May 24, 2023
本日19時からこちらのイベントです📻
なんと400人近いお申し込み!楽しみだ〜〜!yoku×soudaiが語る、あなたの知らないMySQLとPostgreSQLの世界 https://t.co/yymfXuSI0w #DB_findy
— まっきーㅣFindy広報・DevRel (@ayamakkie) May 24, 2023
昨日に引き続いて、Findyで「yokuさん、そーだいさんのMySQLとPostgreSQLの世界について」参加してきました。また、自分の経験上、本業はMySQL、副業はPostgreSQL触っているので、お二人の意見を根堀葉掘聞けて非常に参考になりそうです!
それではイベントレポートしていきましょう!と言いたいところですが、メモ取るのなかなか大変だったので、間違っているところが多いはずです!見つけた際はリプしてもらえると..!
まじそーだいさんとyokuさんの喋る速度がマシンガンでメモするのが大変だったぜ…
— adachin👾SRE (@adachin0817) May 24, 2023
※以下は前回のイベントより!
[2023/05/23][Findy]オブザーバビリティ最前線 〜 事例LTから学ぶ、オブザーバビリティの成熟度〜について参加してきた
イベント概要
https://findy.connpass.com/event/282291/
オープニング・ご挨拶
- yoku0825 @yoku0825
- 日本MySQLユーザ会
- 副代表
- とある企業のDBA。座右の銘は「オラクれない・ポスグれない・マイエスキューエる」
- 曽根 壮大(そね たけとも) / そーだい @soudai1025
- 株式会社リンケージ/PostgreSQLユーザ会
- 合同会社 Have Fun Tech 代表社員、株式会社 Linkage CTO。
- 数々の業務システム、Webサービスなどの開発・運用を担当
- 2017に株式会社はてなでサービス監視サービス「Mackerel」のCRE(Customer Reliability Engineer)
- 株式会社オミカレの副社長/CTOなどを経て、合同会社 Have Fun Techを起業。
- その後、LinkageのCTOとしてJOINし、HaveFunTechの経営と二足の草鞋を履きこなしている
- コミュニティでは、Microsoft MVPをはじめ、日本PostgreSQLユーザ会の理事として勉強会の開催を担当し
- builderscon 2017、YAPC::Kansaiなどのイベントでベストスピーカーを受賞
- 岡山Python勉強会を主催し、オープンラボ備後にも所属。著書に『Software Design』誌で、データベースに関する連載「RDBアンチパターン」をまとめた『失敗から学ぶRDBの正しい歩き方』を執筆。
今回はLT大会というよりも、事前に質問したい内容をお二人にプルリクエストを送って、雑談形式でお答えするといった形でした。リアルタイムで相談できるのは新しいイベントだ!
MySQLに質問
- 8.1について
- 新機能を足すのをやめている
- テレメトリーのサポートが増えている
- 8.1はまだ決まっていない
- 名言はされていない
- コミュニティで直したよと予想している
- 普段のチケットのやり取り
- 8.0のEOLは2年しかいない
- 次のLTSを待つ
- PosgreSQLは3ヶ月に一回メジャーマイナーバージョンアップが出る
- パッチも出る
- 最新はv15
- 1年寝かしている
- RDSも1年遅れている
- 最新マイナーは追いかけてるか?
- 新機能がよく壊れる
- レプリケーションなど
- MySQLも触ってるから壊れる
- MySQL5.5世代 yokuさん
- 常に5.1とか4.0などがあった そーだいさん
- バージョンアップは飽きない
- 新機能は大好き
MySQL真面目にオンプレで運用するならPostgreSQLよりも限界が高いから費用対効果も出るし、商用版ならサポートもあるので選択肢としてアリだと思う。
クラウドでDBのプライマリが1台みたいな世界観ならPostgreSQLが断然良いと思う。
— そーだい@初代ALF (@soudai1025) May 24, 2023
PostgreSQLに質問
- BRINどうですか
- https://www.postgresql.jp/docs/9.5/brin-intro.html
- 使ってる人いる
- indexが小さくなる
- パフォーマンスは劣化していない
- INSERTも早くなる
- 大量データには効く
- 範囲で検索することが多い
- 履歴データ、ゲームの履歴
- アイテムの履歴
- 相性がいい
- RDSはストレージの容量気にしない
- オンプレとかは聞きそう
- UPDATEが多いのは有効的ではない
- GiNで使う場合
- https://www.postgresql.jp/document/8.4/html/textsearch-indexes.html
- timestamp型で範囲型でindex貼って今の時間どうするかに有効
- PosgreSQLはバージョンアップのドキュメントが手厚い
- 日本語訳すごい
- 誤字脱字はプルリク出してーー
- yokuさんはマニュアルをDropboxに入れてる
勉強方法について教えてほしい
- 勉強方法は?
- ドキュメント読む
- 頭から読むと前提から知らんパラメーターからわかるので楽しい
- PosgreSQLは頭から読むのは効率的ではなさそう
- 運用のことは書いてない
- チュートリアル
- 踏み込んだ機能や使い方は以下をおすすめ
- https://www.postgresqlinternals.org/
- deadlockも出てくる
- お二人のマニュアル超活用
- そーだいさん
- リリースノートを見る
- 篠田の虎の巻見る
- パラメーターの変更
- 機能の追加
- 全部のマニュアルはあんまり見ない
- 必要になったときにドキュメント
- yorkさん
- 調べ物が多い
- https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html
- https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html
- 最近は日本語でも公式のドキュメントが出てくるようになってきた
- chatgptに聞いてドキュメントと比較する
- 初学者
PostgreSQLを学ぶのにオススメの本です https://t.co/feFU1gSNI2 #DB_findy
— そーだい@初代ALF (@soudai1025) May 24, 2023
勉強方法の話でいえば「知らないことをそのまま放ったらかしにしない」ってのが自分の中であって、気になったらすぐ調べる(少なくとも当日)ってのを大事にしている。
そうやって毎日一つでも成長するのが大事。
— そーだい@初代ALF (@soudai1025) May 24, 2023
MySQL 8.0のオススメニッチ機能は?
- MySQL8.0のオススメニッチ機能は?
- RLS(Row Level Security)
- ACLの評価がタイト
- WordPressみたいなマルチテナント型
- 9999行ぶん回るので危険
- 使わないと思う
- マルチテナントはPosgreSQLどう?
- テナントごとにスキーマを分けられる
- soudaiユーザ→soudaiスキーマの流れ
- 1つのDBはローレベルスキーマを使う
- where区にindex効いていればOK
- user tableがcompany tableを見せない場合、フィルターを書くと重い
- MySQLと比べてPosgreSQLはサブクエリは重くない
- 1億件でもindex書けば100msで帰ってくる
- user_idにconmany_idをつければいい
- Row Level Security(PosgreSQL)
- 有効にするテーブルを使い分けれる
- スイッチ・オンできる
- オフで別のやり方ができる
- 設計がindex効いていれば問題なし
- PosgreSQLは格納したい
- 他のところにアクセスしたくない場合は別でわけて集めていた
- はじめから分割してあとから行うのはMySQLと違う
- MySQLはシャーディングしやすい
- テーブルスキャンする前提はPosgreSQLが多い
- 他にニッチは?
- Window 関数が8.0対応
- デュアルパスワード
- 1アカウントに2つパスワードを設定できる
- パスワードがGitHubにpushされてもユーザーを作り直さなくていい
- リリースが終わったら古いパスワードを消す
- 数分間稼げる
- CLONE プラグイン
- 既存のMySQLの全データを手軽にコピーする機能
PostgreSQLの開発について
PostgreSQL、やっぱリリーススピードは遅くてMySQLの方が進化の速度はめっちゃ早いからそのうち機能的な面ではMySQLが追いつくこともあるんじゃないかなと思ったりはする。
リリースサイクルは不安もあるけど、開発力があれだけあれば将来の投資として十分価値があるんだよなぁ。
— そーだい@初代ALF (@soudai1025) May 24, 2023
- 日本も増えてきた
- 企業媒体がない
- 完全にコミュニティで作っている
- 少なくてもコントリビューターになれる
- 自分で作った機能をメンテしている
- 条件が書いている
- https://wiki.postgresql.org/wiki/Committers
- MySQLもプルリク出すのもサインでOK
- オラクルコントリビューターアグリーメント
- コミッターは中の人がコミットしている
- 中の人から声をかけてもらうしかない
- Facebookとか
- forkして使う人が多い
- 最近Maria DBはどう?
- maria-discuss
- コミュニティも活動している
- 相談相手が多い方がいい
- コミュニティで取り込まれないのもあるけどどうなっているのか
- マージすることによって壊れるケースがある
- テストが足りないのもマージされない
- PosgreSQLはfeatureフリーズする
- 今年の機能追加一覧
- テストに参加して十分に枯れてたらマージされる
- テストしていないとrejectされる
- ストレージエンジン
- 内部に関わるのは破壊的変更を伴うのでNG
- 差し替えるAPIを用意して段階的に時間がかかる
- パーティションがいい例
- 10ぐらいから出た
- 13から使える
- 論理レプリケーションも鳴らしてミニマムから機能追加していった
- 使い物になるまで時間がかかる
- テストは誰でもできる
- 手伝ってみようかなと思ったらみんなサポートしてるからぜひ!
- パッチレビューのやり方
- https://masahikosawada.github.io/2021/01/06/CF-patches-for-beginners/
- PosgreSQLはSlackへ!
- 来月セミナーをやるのでさわださんに会いに行こう!
- https://jpug.connpass.com/event/283733/
澤田くんと話せるチャンス! #DB_findy
懇親会参加枠もあります。 https://t.co/iVk8rzdypd— そーだい@初代ALF (@soudai1025) May 24, 2023
日本語メインの意見交換の場所としてSlackにPostgreSQL部屋作りました。初心から玄人まで意見交換出来る場にできればと思います。ご活用ください。 https://t.co/kFeiiKZW2d
— そーだい@初代ALF (@soudai1025) October 31, 2019
DBのチャンネルここもオススメ #DB_findy https://t.co/PTpdcbvSiY
— そーだい@初代ALF (@soudai1025) May 24, 2023
Q&A
- 8.0でyokuさんを悩ませたのは?
- collationが違うとjoinできない
- collationの概念で大文字小文字の区別がカラムレベルで定義できる
- 今まではlatinだったのがutf8mb4
- utf8mb4のデフォルトの照合順序がutf8mb4_general_ci からutf8mb4_0900_as_ci に変更
- はとぱとばを区別できない
- 日本語検索いないだろうけど好きではない
- CIとCI同士は優先できない
- SET GLOBALしかできない
- インフラ的にはSET PERSIST で押し込むのがベスト
- collationのおすすめは?
- デフォルトが良い
- ai_ci使えばいい
- 区別したいならbinを使えばいい
- 日本語入れたいならbinを使えばいい
collation どうしの比較はここにまとめたhttps://t.co/Jh4UnQLoun
— Mitani (@mita2) May 24, 2023
現代のMySQLでPrimary Keyのオススメは?
- MySQLはUUIDはやめた方がいい
- indexが非効率になる
- post uuid型もある
- MySQLはBIGINT
- シャーディングならtimestamp シャードid
- 自分たちの要件に合わせよう
- 普通ならBIGINTでAUTO_INCREMENT
- AUTO_INCREMENTはあとから足すのは不向き
- UNIQUE KEYで保護する
MySQLはKVSの意図を知りたい
- 主キーで引いてくるように使おう
- Key Value StoreならMySQLがあっている
- ordey by limitのindexが早い
- 最適化されてるから早い
これかな? #DB_findy
MySQLとインデックスと私 – Speaker Deck https://t.co/PohVk7GrFw
— yoku0825 (@yoku0825) May 24, 2023
まとめ
お二人のお話を聞いて、2つのDBのメリット、デメリットを知れるきっかけとなりました。PosgreSQLは大規模なデータセットを処理するために向いていたり、技術選択としてはサービスの要件によって合わせることが大事ですね。デュアルパスワードやCLONE プラグインは全く知らなかった。。まさにニッチ。コミュニティも積極的に活動してみようかしら!むちゃくちゃタメになったので、定期的にイベント開催してほしいですね!ありがとうございました〜〜!
0件のコメント