DB

PostgreSQL Isolation について

DB

トランザクションのACID特性のうち、Isolation(隔離性)について整理する。 検証環境 Isolationとは? Isolation Level Snapshot Isolationとは? Write Skew Read Only Skew PostgreSQLにおける実現手段 ANSIとの対応 実装の詳細 追加/更新/削除の挙動 Isolati…

PostgreSQL WALログの仕組みとタイミングを理解したい

DB

普段はアプリケーションレイヤの仕事をしているため、「データベースはデータを入れておくただの箱」という発想でした。が、さすがにこれはまずいだろう、と思いたち、勉強中です。 とくにデータベースが専門領域というわけではないので、間違いがあれば教え…

Deep Dive into MyBatis

検証環境 java 11.0.1 2018-10-16 LTS MyBatis 3.4.6 サンプルコード 以下を実行しながら、処理の流れを追っていく。 複雑な箇所は適宜、シーケンス図を作成する。(メインの流れではないと判断したところは適宜省略して記載するので、正確さにはやや欠けます…

Java いまふたたびのJDBC

この記事は Java Advent Calendar 2018 の 9 日目のエントリーです。 流行をとらえた話題が多いなか、10~15年前感のあるコンテンツです。化石です。 しかし化石とはいえ、よく使う技術ではあります。 ということで、何気なく使ってたけど改めて勉強し直しま…

BLOBをデータベースで管理する

はじめに 突然ですが、皆さんはアプリケーションで扱うBLOBデータをどこに保存しているでしょうか?大きく分けると、以下のいずれかになると思います。 ファイルストレージ データベース オブジェクトストレージ いずれも一長一短ありますが『SQLアンチパタ…

Docker PostgreSQLイメージを利用する

目的 検証環境 PostgreSQLを起動する PostgreSQLに接続する ホストからアクセスする コンテナを利用してアクセスする パターン1 コンテナを利用してアクセスする パターン2 PostgreSQLコンテナの停止 PostgreSQLコンテナの再開 初期データを設定する Postgre…

MyBatis 利用時に SQL で FULL OUTER JOIN するときの注意点

検証環境 mybatis 3.4.5 java 1.8.0.25 ハマったこと DBに以下のようなデータが入っているときに SQL で FULL OUTER JOIN すると、以下のようになる。 これに対応するJavaのBeanを用意して、 @Data public class Shelf { private Long id; private String na…