見出し画像

【dbts2024 レポート】使い慣れたSQLに潜む実装依存

こんにちは、プロダクト開発部本部 田上です。db tech showcase 2024 2日目のB13のセッションである「使い慣れたSQLに潜む実装依存」のレポートをお届けします。

セッション概要

Oracle Database 23aiでは一部のPostgreSQLやMySQL構文がサポートされるようになりましたが動作が異なる部分もあります。いつも普通に使っているSQL文や関数の微妙な動作の違いについて、代表的なRDBMSを使って説明します。

スピーカー名:日本ヒューレット・パッカード合同会社
デリバリーサービス統括本部
シニアアーキテクト
篠田 典良 様

セッション内容まとめ

  • 実行したSQL文とその結果に関する各データベースエンジンごとの差異を、3つの区分(構文、関数、データ型と演算子)に分けて説明されていました。

  • 例1(構文):トランザクション処理の挙動の差異

    • 主キー制約違反が発生するSQL文について、PostgreSQLはトランザクション全体をロールバックする一方、Oracle Database、MySQL、SQL Server、SQLiteはエラーが発生してもトランザクション全体をコミットする。

  • 例2(関数):関数CURRENT_TIMESTAMPの差異

    • Oracle Database、PostgreSQL、Spannerはタイムゾーン情報を含み、MySQL、SQL Server、SQLiteはタイムゾーン情報を含まない形式で返すという差異がある。

聴講した感想

アプリケーションの実装者として、以下のような感想を持ちました。

  • 実装が特定のDBのデータ形式(例:タイムスタンプ)に依存している場合、DB移行時に互換性の問題が発生する可能性がある。

  • 移行先のデータベースエンジンが特定のSQL構文や機能をサポートしていない場合、アプリケーションのコードを修正する必要が生じる。

  • 開発者がDBエンジンの挙動の違いを十分に理解していない場合、コード中で予期しないバグが発生する可能性がある。

アーカイブ動画配信のご案内

db tech showcase 2024は、期間限定でアーカイブ動画を配信中です。
本イベントのセッションをオンラインでご視聴いただけるほか、講演資料のダウンロードも可能です。継続公開が決まったdb tech showcase 2023のセッション動画も含め、約130本の動画を自由に見ていただけます。
※一部対象外セッションあり

この記事が気に入ったらサポートをしてみませんか?