データベース

なぜスタートアップはMySQLを選び続けるのか

スタートアップがMySQLを選ぶ理由は「慣習」ではない MVP開発に必要な条件 ORマッパーとの相性 採用と学習コスト スケールは後から考える 注意点:万能ではない なぜ他のDBに置き換わらないのか 結局、何を選んでいるのか スタートアップがMySQLを選ぶ理由は…

なぜMySQLは世界一使われるDBになったのか

MySQLが普及した理由は「性能」ではない 2000年代のWebは特殊な環境だった 当時のサーバ事情 PHPとの相性が圧倒的だった なぜ他のRDBMSではなくMySQLだったのか WordPressが決定打になった スタートアップ文化との一致 注意点:普及率と適性は別問題 なぜ今…

MariaDBが生まれた本当の理由

MariaDBは「互換DB」ではなく思想の分岐点 きっかけはOracleによるSun買収 MySQLの創始者が離脱した理由 なぜ名前が「MariaDB」なのか MariaDBが目指したもの 実際に起きた分岐 現場で起きる誤解 なぜ企業は判断に迷うのか 注意点:気軽に混在させない では…

Oracleに買収されてMySQLはどう変わったのか

Oracleに買収されてMySQLは「別物」になったのか 買収前のMySQLは「RDBMSらしくなかった」 昔のMySQLの特徴 なぜそれで人気になったのか Oracleが変えたMySQLの方向性 「速いおもちゃ」から「業務用RDBMS」へ なぜ厳格化したのか MariaDBが生まれた理由 開発…

MySQLとPostgreSQLの思想が分かれた瞬間

同じRDBMSなのに、なぜこんなに違うのか PostgreSQLの前提:データが最優先 MySQLの前提:アプリケーションが最優先 GROUP BYが象徴する思想差 型変換の違い なぜ方向が分かれたのか 後から起きた逆転現象 現在の違い 開発で受ける影響 どちらを選ぶべきか …

「とりあえずMySQLを8.0に上げよう」が危険な理由

8.0へのアップグレードは「善」だが「安全」ではない アップグレードはインフラ作業ではない 最初に壊れる場所は「想定外」 典型的なトラブル1:GROUP BY 典型的なトラブル2:日付 典型的なトラブル3:文字コード なぜ「とりあえず」が危険なのか sql_modeを…

なぜ企業はMySQLのバージョンを上げたがらないのか

「古いまま」は怠慢ではなく戦略 アップデートは性能改善ではない 本番システムの優先順位 見えない依存関係 テストが成立しない問題 もう1つの理由:コスト セキュリティとのバランス 実際に起きたケース 注意点:放置とは違う まとめ 「古いまま」は怠慢で…

SQLが同じでも動かない ― MySQLのバージョン差異

「同じSQLなのに結果が違う」は珍しくない GROUP BYの代表値問題 ORDER BYの並び順が変わる 比較演算の変化(暗黙型変換) 日付の扱い NULLの扱い インデックスの効き方が変わる 文字列長とインデックス なぜこんなことが起きるのか 対策の方向性 まとめ 「…

MySQLをアップデートするとアプリが壊れる理由

MySQLアップデートは「DBの作業」ではなく「アプリ改修」 最初に発生する:接続できない 次に発生する:SQLが通らない GROUP BYエラー 暗黙の型変換 文字コードが原因の不具合 日付データが登録できない 表示は動くが結果が変わる sql_modeを外す対処の落と…

MySQLとMariaDBは互換ではない理由

「MariaDBはMySQL互換」は半分正しく半分間違い なぜMariaDBは生まれたのか 互換でなくなった理由 具体的に起きる違い インデックスとストレージエンジン JSON型の違い インデックスと照合順序 レプリケーションが壊れる理由 クライアントライブラリの違い …

なぜMySQLは8.0で仕様が急に厳しくなったのか

MySQL 8.0は「厳しくなった」のではなく「データベースになった」 SQL標準への接近 なぜSQL標準が重要になったのか 代表例:曖昧な型変換の禁止 日付の扱いが変わった理由 ONLY_FULL_GROUP_BYが有効になった理由 なぜ急に変更されたのか 厳格モード(STRICT_…

MySQLの「5.7」と「8.0」は何が違うのか

MySQL 5.7と8.0の違いは「速くなった」ではない MySQL 8.0で最初に衝突する「SQLモード」 GROUP BYで突然エラーになる ONLY_FULL_GROUP_BYの影響 文字コードのデフォルト変更(地味だが一番危険) インデックス長制限に引っかかる データディクショナリの刷…

MySQLのバージョン番号の意味を理解する

MySQLのバージョン番号は「機能の差」ではなく「役割の差」を示している まず知っておきたい:3つの番号の意味 Innovation Releaseとは何か 開発のためのMySQL LTS(Long Term Support)とは何か 運用のためのMySQL なぜ2種類に分けたのか 開発者が求めるも…

MySQLの8.0と8.4は同じ8系なのに何が違うのか

MySQL8.0と8.4は“同じ系統”だが同じ性格ではない MySQL8.0の特徴:変化する前提のデータベース MySQL8.4の特徴:変わらないことが目的 “同じSQLが同じ結果を返す”の重要性 Innovation Release と LTSの違い Innovation Release(8.1〜8.3) LTS(8.4) 実務…

なぜMySQLは9.0にならなかったのか

MySQL8.0の次が9.0でないのは“技術的理由”ではない メジャーバージョンが持つ“意味” MySQL8.0は“継続進化型”に変わった 従来のMySQLの考え方 そこで変わったリリースモデル 9.0にしなかった本当の理由 8.4という番号の意味 実際に起きる現場の反応 バージョ…

なぜMySQL8.4はLTSになったのか

MySQL8.4がLTSになったのは「技術」ではなく「運用」のため MySQLのリリース方式が変わった背景 8.0までのMySQLは“止まらないリリース” 企業が嫌う“静かな仕様変更” OracleがLTSを導入した理由 Innovation Release と LTS Innovation Release LTS(8.4) な…

MySQL 5.7・8.0・8.4の違いを整理する

MySQLの「5.7」「8.0」「8.4」は“同じ製品”ではない MySQL5.7:古いが“従来のMySQL” 典型的なLAMP時代のMySQL 5.7の弱点:甘いSQLでも動いてしまう MySQL8.0:設計思想が変わった“新MySQL” 最大の変更:SQL標準に近づいた セキュリティも別物 追加された主な…

バックエンドとは何をしているのかをやさしく理解する

バックエンドは「見えない場所」ではなく「判断する場所」 どこに存在しているのか 具体的に何をしているのか データの管理 計算と判定 応答の生成 なぜ必要なのか フロントエンドとの違い 注意点:遅く感じる原因にもなる よくある誤解 バックエンドはデー…

なぜAIチャットにデータベースが必要になるのか

AIだけではチャットボットは完成しない AIの「知識」の正体 なぜプロンプトに書くだけではダメなのか データベースの役割 具体的な処理の流れ なぜ検索システムが必要になるのか データベースがないと起きる問題 逆にAIが必要な理由 結局、AIチャットとは何…

JavaのHibernateについてとプロバイダーとしての役割

JavaのHibernateとは 特徴 主な機能 使用例 SpringDataJPAを使用する際に、Hibernateの依存関係が含まれる理由 1. JPAプロバイダーとしてのHibernate 2. デフォルトのJPAプロバイダー 3. 豊富な機能と安定性 4. 高い互換性 依存関係の設定例 まとめ JavaのHi…

JavaのDBアクセス時に使用されるリポジトリの役割と永続化について

JavaのDBアクセス時に使用されるリポジトリの役割 1. JDBC(Java Database Connectivity) 2. ORM(Object-Relational Mapping)ツール 3. Spring Data JPA 4. MyBatis まとめ リポジトリの永続化について 1. リポジトリパターン 2. JPA(Java Persistence A…

java.sqlとjavax.sqlの特徴と違い

java.sqlとjavax.sqlの特徴と違い java.sql javax.sql 主な違い java.sqlを用いた基本的なデータベース操作 javax.sqlを用いた高度なデータベース接続管理機能 データソースを使用した接続(コネクション)プーリング Mavenの依存関係 コード例 分散トランザク…