ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

プログラミング

新着順 人気順

SQLの GROUP BY 句には列名だけでなく式も記述することができる

はじめに 「達人に学ぶSQL徹底指南書」(以下、達人SQL)の「1-1 CASE式のススメ」には GROUP BY 句に CASE 式の含まれるSQLが登場します。達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)作者: ミック出版社/メーカー: 翔泳社発売日: 2008/02/07メディア: 単行…

トランザクションをもっと深く知るための資料集

データベースを扱う方にとって、トランザクションは当たり前の存在です。そんな当たり前のものがどういった理論と技術で実現されているか、そしてそれらが今も進化していることをご存知でしょうか。トランザクションをもっと深く知りたい方に向けて、参考と…

Oracleの日付書式"RR"と"YY"は4桁表記にも適用できる

Oracle Database の日時書式モデルは以下のように定義されている。 要素 説明 RR 2桁のみを使用して、21世紀に20世紀の日付を格納できます。 YY 年の2桁。 参考:書式モデル実際には日付書式に"RR"と"YY"を指定しても、年に4桁を使用できる。 SQL> select TO…

PostgreSQL における WITH 句と実行計画への影響の考察

PostgreSQL の WITH 句を活用することで、クエリの可読性向上だけでなく、実行計画改善の手段となるかもしれません。

Oracle Database のTO_DATEファンクションでORA-01861が発生する

事象 Oracle Database にJDBC経由で接続し、TO_DATEファンクションを日付フォーマット指定無しに実行すると、環境によってORA-01861が発生する場合がある。 例えば、Windows上では問題ないのに、Linux上で同じJavaプログラムを動かすとエラーになることがあ…

SELECT-INSERT で SELECT に ORDER BY を指定するとソートが実行される

リレーショナルモデルは集合を扱い、行の順序を意識しないはずです。なのになぜ SELECT-INSERT の SELECT で ORDER BY できるのか…という疑問と検証を書き留めています。

SQL で ORDER BY をクエリの最後にしか記述できず、結果セット全体にしか適用できない理由

SQL で ORDER BY の指定はクエリの最後に記述する必要があります。また、ORDER BY は結果セット全体に対して行われます。 この理由を理論面(リレーショナルモデル)と設計面 (SQL) からみていきます。

機械学習における CV と DCV の違いと内部挙動

本記事では、機械学習における CV と DCV の内部で、どのデータを用いて何を行っているのかに踏み込んで説明します。

ソフトウェアの運用保守フェーズでまず用意すべきドキュメントリスト

はじめに ソフトウェアの開発は厳しい工数管理と納期に迫られます。その中でドキュメントはしばしば削減対象となります。ただ、ドキュメントを削減したツケは運用保守フェーズで払うことになります。コードを見ればわかる?サーバ構成なんて調べればわかる?…

PostgreSQLの実行計画の実行順とコスト・実行時間の累積

はじめに PostgreSQLの実行計画の読み解き方は公式マニュアルで説明されています。PostgreSQL 10 でのリンクを示します。 14.1. EXPLAINの利用ですが、若干分かり辛い個所があるため、本エントリでは以下の観点に着目して補足することにします。 ノードの実…

VS Code と GDB で PostgreSQL をデバッグする

VS Code + GDB でリモートデバッグする手順について PostgreSQL を題材に解説します。

Oracle JDBC ドライバのバージョンを管理する

はじめに Oracle JDBCドライバのバージョン管理についてまとめます。 できる限り公式の情報に基づいていますが、推測に頼らざるを得なかった箇所はその旨記載しています。 はじめに 手元にあるOracle JDBC ドライバのバージョンはどうやって調べるのか? OTN…

PostgreSQLの実行計画を読み解くための参考資料集

はじめに PostgreSQLは商用DBに比べて書籍が少なく、まとまった情報が入手しにくいです。また、有志の方がPostgreSQLに関する資料を公開していますが、散在しており、せっかくの有益な情報にアクセスしにくい状況にあります。そこで、本エントリではPostgreS…

SQLのGROUP BY句の処理を理解する

SQLのGROUP BY句の解説記事は多くありますが、本エントリでは他の記事とは解説方法を変え、処理の段階を追って説明します。また、CASE式との組み合わせにも触れます。

SQLのWHERE句で用いられる相関サブクエリを理解する

はじめに 相関サブクエリもしくはEXISTS述語の使い方として、以下のようなSQLがよく取り上げられます。 SELECT * FROM item i WHERE EXISTS (SELECT * FROM stock s WHERE i.id = s.id); これに対して以下のデータが与えられたとします。◆itemテーブル id na…

生成AI時代のソフトウェア開発者とレビュアーの責任

生成AIによってコードやドキュメントの作成は効率化する一方、レビューや品質保証の重要性はむしろ高まります。 本記事では、生成AI時代におけるソフトウェア開発者とレビュアーの責任と役割分担について考察します。

PostgreSQL実行計画のハッシュノードに出力されるバケット数とバッチ数の解説

目的 PostgreSQLの実行計画のハッシュノード(Hash)に出力されるバケット数(Buckets)とバッチ数(Batches)について解説を行います。また、バッチ数とパフォーマンスの関係についても触れます。このテーマについて Pat Shaughnessy さんが英語の解説記事を公開…

集合に含まれない組み合わせをクエリで抽出する

集合に含まれない組み合わせをクエリで抽出する手法について、データベーススペシャリスト試験の問題を用いて解説します。

PostgreSQL は更新処理を ROLLBACK してもテーブルファイルに追記される

PostgreSQL はテーブルに対する更新処理を行うと、最終的に ROLLBACK した場合でもテーブルファイルに追記されます。本エントリではこの挙動を検証します。

Bitmap Index Scan の後の Bitmap Heap Scan でRecheck処理が行われることの解説

PostgreSQL の実行計画において、Bitmap Index Scan の後に実行される Bitmap Heap Scan で "Recheck cond" と出力されます。Index Scan をしているにも関わらず、なぜ Heap Scan でインデックスの検索条件を再チェックする必要があるのか解説します。

「はじめて学ぶソフトウェアのテスト技法」の読解メモ

「はじめて学ぶソフトウェアのテスト技法」は特に前半のパートで誤記や説明不足な箇所が目立ちます。そこで、これらを補足する目的で本記事をまとめることにしました。

PostgreSQL のテーブル継承は概念データモデルのスーパータイプ/サブタイプを実装する手段では無い

PostgreSQL にはテーブルの継承という機能があります。 本記事ではテーブル継承を概念データモデルのスーパータイプ/サブタイプの実装に用いると、どのような問題が出るかを見ていきます。

iOS Developer Programの個人と企業(法人)の扱いの違いについて

はじめに iOS Developer Programでの扱いが個人と企業(法人)でどう違うのかをまとめておきます。 Apple IDの準備 iOS Developer Programへの登録には最低一つのApple IDが必要になります。iOS Developer Programに個人・企業のいずれで登録する場合でも、A…

PostgreSQL Anonymizer が提供するマスキング方式の解説

PostgreSQL Anonymizer は PII(個人識別情報)や機微データをマスク/匿名化する拡張機能です。利用頻度の高い方式について、仕組み・ユースケース・制限をまとめます。

第15回Solr勉強会 レポート

2014/12/08にグラントウキョウ サウスタワー(会場:株式会社リクルートテクノロジーズ 提供)にて開催された、「第15回Solr勉強会」レポートです。 第15回Solr勉強会 #SolrJP - Lucene/Solr勉強会 #SolrJP | Doorkeeperスライド資料に無い説明を中心にまと…

「Regional Scrum Gathering Tokyo 2015 Day1」レポート

2015/02/28に開催された、「Regional Scrum Gathering Tokyo 2015 Day1」レポートです。 Regional Scrum Gathering Tokyo 2015: Scheduleスライド資料に無い説明を中心にまとめています。ぜひスライド資料を併せてご覧ください。【参考】としている個所は私…

テーブル結合における外部表・内部表の選択

目的 テーブル結合の外部表(駆動表)はデータセットの小さい方を選ぶ可能性が高いです。データセットの小さい方を選ぶことでI/Oコストの観点から有利になることを示します。また、オプティマイザの外部表・内部表選択基準の例を挙げます。 疑問 表Rと表Sの…

急がば回れ、選ぶなら近道 TX記事 読解メモ

目次 目次 はじめに 前提知識 トランザクションの基礎知識 数学記号 iff Serializabilityの選択 predicate install 参考資料 本エントリでの表記 Welcome back to the TRANSACTION! A Critique of ANSI SQL Isolation Levels再読 A critique of ansi sql iso…

PostgreSQL にてWHERE句で=演算子の左辺・右辺に同じ列名を指定すると行数推定が不正確になることがある

PostgreSQL 10 以前では WHERE 句で = 演算子の左辺・右辺に同じ列名を指定すると、行数推定が不正確になることがあります。この問題は PostgreSQL 11 で改良されました。

データベースはレコード・フィールドではなく、行・列と表現すべき

Joe Celko はデータベースにおいて、行・列という用語を使うべきであり、レコード・フィールドという表現は適切でないと主張しています。これは論理的存在と物理的存在を分けるべきとの考えからです。