データベース
42 件の記事
理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL
『理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL』の書評。リレーショナルモデルの理論からデータベースを学ぶことで、RDBへの向き合い方や考え方を整理できる一冊。効率的なSQLの背景にある原理を、集合論や論理学を土台に理解できる。
SQLアンチパターン
『SQLアンチパターン』の書評。データベースやSQLで陥りがちなアンチパターンを、分かりやすい解説とともに紹介する定番中の定番の一冊。よくある失敗とその回避策を知ることで、設計や実装の判断に役立つ。
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
『達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ』の書評。基本的な書き方の先にある、SQLの多彩な表現を学べる一冊。「こう書けるのか」と引き出しが増える内容で、初級者から一歩先へ進みたい人に向いている。
SQL実践入門──高速でわかりやすいクエリの書き方
『SQL実践入門──高速でわかりやすいクエリの書き方』の書評。SQLを書くときに意識しておきたいことを整理した一冊。実行計画をふまえ、速く読みやすいクエリを書くための考え方を、順を追って学べる。
データベースインデックスとは?仕組みと必要なタイミング
データベースのインデックスとは何かについて解説する記事です。テーブルのレコードを高速に取り出すための仕組みであるインデックスを、B-Treeやハッシュインデックスの内部構造、効果的に使える場面、そして作り過ぎることのデメリットといった観点から、具体例を交えて紹介します。
DB設計のID設計:UUID vs 連番 vs ULID の選び方
DB 設計における ID の選び方を解説。UUID・連番(AUTO_INCREMENT)・ULID それぞれのトレードオフとユースケースを比較します。
DB設計におけるNULL:よくある落とし穴とベストプラクティス
DB設計におけるNULLの扱い方を解説する記事です。NULLとは「値が存在しない」または「値が不明」であることを示すもので、通常の値のようには比較できません。三値論理による落とし穴やリレーショナルモデルとの関係をふまえ、NULLを使う場面・避けるべき場面とベストプラクティスをまとめます。
Cloud Spannerの知見メモ|設計・運用のポイント
Cloud Spannerについて調べた知見をまとめたメモです。ノードやスプリット、レプリケーションといった仕組みや、計画メンテナンス時のダウンタイムがなく高い可用性を持つといった特徴から、ホットスポット対策やインデックス最適化まで、実装・検証を通して得た走り書きの知見を整理します。
Aurora Serverlessについて調べた
Amazon Aurora Serverlessに興味を持って調べた内容をまとめた記事。Aurora Serverless v2のマルチAZ対応やオートスケーリング、コスト最適化、導入時に検討したいポイントなどを、参考にした記事とともに整理する。
MySQLのトランザクション分離レベル:ダーティリード・ファントムリードを防ぐ
MySQL のトランザクション分離レベルを解説。ダーティリード・ノンリピータブルリード・ファントムリードと、それぞれを防ぐ設定方法を学べます。
トランザクション概観
データベースのトランザクションの基礎について解説する記事です。データを正しく保つための手法であるトランザクションを、多数のクライアントから同時アクセスが発生する状況などを念頭に、ACID特性や並行性制御、分離レベルといったデータ整合性を支える仕組みとあわせて紹介します。
シャーディング vs パーティショニング:違いと使い分け
ときどきどちらがどちらか混乱してしまうシャーディングとパーティショニングの違いについて、メモとしてまとめた記事です。水平分割と垂直分割の使い分けや、データを複数に分けることでスケールさせるデータベースのスケーリング戦略を、両者を対比しながら整理します。
MySQLで全文検索
MySQLでの全文検索を解説。FULLTEXT INDEX、ngramパーサー、MATCH...AGAINSTによるクエリの書き方を紹介します。
NewSQL関連の資料を読み漁った
NewSQLについて調べ、読み漁った資料をまとめた記事です。もともとはいくつかのNewSQLのデータベースを比較したいと考えて情報を集めていましたが、内部で使われている技術を理解する必要があったため、関連技術に関する記事も含めて要点を整理しています。
Ubuntu 20.04.2 LTSでmysqlコンテナを起動するとPermission deniedで怒られた
Ubuntu 20.04でMySQLコンテナ起動時に出るPermission deniedエラーを、docker-composeのuser(UID/GID)設定を見直して解決する方法を解説します。
M1 MacでMySQL8.0.17のコンテナが起動できない
Apple M1 MacでMySQL 8.0.17のコンテナが起動しない問題(failed to create new OS thread errno=22)を、MySQL 8.0.26+と--platform=linux/amd64で解決する方法を解説します。
DBドキュメント(ER図など)を自動生成してくれるツールーschemaspy, tbls
DBのER図やテーブル定義などのドキュメントを自動生成するOSSツールとして、SchemaSpyとtblsを実際に試した記録です。導入手順や生成されるドキュメントの内容、使い勝手を比較し、それぞれの特徴と選び方を整理します。
MySQLでテストデータを生成するSQL
MySQLだけでテストデータを生成するSQLの書き方についてまとめたメモです。テストデータをスクリプトで生成する方法は柔軟性が高い一方、数万件のレコードでパフォーマンステストをしたいときなどは、SQLだけでも十分な場合があります。その具体的な書き方を紹介します。
複数のテーブルに多対1で紐づく時のテーブル設計のアプローチについて
複数のテーブルに対して多対1でテーブルが関係付くときの、テーブル設計のパターンについてまとめた記事です。issuesやpullrequestsといった例を題材に、SQLアンチパターンとされるポリモーフィック関連と、それを避ける設計とを、実装面から比較しながら整理します。
ER図のリレーションシップの種類について
ER図リレーションシップの種類を解説。依存・非依存・多対多関係でテーブル間の親子関係を正確に把握し、効率的なDBスキーマ設計を実現する方法を紹介します。