db tech showcase

dbtsブログ

このエントリーをはてなブックマークに追加

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

中級者向け 運用ノウハウ
【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エンジンの挙動の違いを十分に理解していない場合、コード中で予期しないバグが発生する可能性がある。
一覧に戻る