SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 Developers Summit 2025 Summer 2025年7月18日(金) https://event.shoeisha.jp/devsumi/20250717/session/5937
リレーショナルデータベースを扱うシステム開発には、様々な場面で陥りやすい失敗(アンチパターン)が存在します。本書では、SQLやデータベース設計を深く掘り下げ、データモデリングやSQLクエリのロジック、データ駆動アプリケーションのコード設計におけるアンチパターンを紹介し、それらを回避するための実践的な方法を解説します。 ツリー構造や継承構造のテーブル設計、NULLを正しく扱う手法、ランダムに結果を返すクエリやグループ化を行うクエリのコツ、SQLインジェクションなどのセキュリティリスクからウェブアプリケーションを守る手法など、幅広いトピックを網羅します。 第2版では内容を大幅に改訂し、新規書き下ろしの章と15のミニ・アンチパターンが加わりました。 日本語版付録として、奥野幹也氏による書き下ろしのアンチパターン「砂の城」を「関連ファイル」からダウンロードできます。 本書への称賛の声 監訳者まえが
概要 2011~2012年に『Web+DB Press』誌上で連載された「SQL緊急救命室」の書籍化です。病院を舞台としてダメなSQL文が毎回持ち込まれて、どこが非効率なのか、どこが間違っているのかをコミカルな対話形式で議論しながら効率的で正しいSQL文の書き方を学びます。中級者向けのSQL解説書は内容が難しく読者にとって敷居が高くなりがちですが、本書は初級者と上級者の登場人物の対話形式を採用することで物語調でスムーズに理解できるようにしています。 目次 はじめに 本書を読む際の注意事項 動作確認環境 相関名を定義するAS 本書に出てくる主要な人名 サンプルコードのダウンロード 実行計画の取得方法 本書の登場人物 初出一覧 目次 序章:本書を読むにあたってのSQLの基礎──モダンなSQLの必須技術、CASE式とウィンドウ関数 出会い CASE式──SQLが誇る強力なユーザー定義関数 CAS
Google、超高速に評価可能でポータブルな式言語「Common Expression Language」(CEL)発表 式言語とは一般に、プログラミング言語の一部やネットワークなどの構成ファイル、テンプレートファイルなどの中で、簡易な式やロジック、ポリシーなどを記述する際に使われる言語のことです。 こうした用途では、さまざまなプラットフォームに対応する移植性、起動時やプログラムの実行中に評価されることがあることから高速に評価が完了すること、安全に評価が実行できること、用途に応じて拡張しやすいこと、などが求められます。 CELは超高速に評価、ポータブル、サブセットサポート CELは正にこうした要件に対応した式言語となっており、Googleは次のような特徴があるとしています。 ナノ秒からマイクロ秒程度の高速な評価に最適化されている C++、Java、Goでサポートされるスタックによるポータブ
『SQLクックブック 第2版 ―データベースエキスパート、データサイエンティストのための実践レシピ集』 Anthony Molinaro, Robert de Graaf 著、嶋田 健志 監訳、木下 哲也 訳 2022年2月17日発売予定 560ページ(予定) ISBN978-4-87311-977-9 定価4,400円(税込) トップデータサイエンティストと統計のエキスパートによる、実践に役立つSQLのレシピ集。第1版を全面的にアップデートし、さらにデータサイエンティスト向けのレシピを追加、補強しています。巨大医療コングロマリットで長年データ分析とデータベースの特性評価を行っている著者たちの経験に基づき、SQLを使う上でよく遭遇する問題と、広く使われているMySQL、Oracle、PostgreSQL、SQL Server、Db2による解決策を提示。各データベースの持つ長所と短所、特性な
こんにちは、Development Teamの三宅です。 先日、社内(AI事業本部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業本部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLやRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基本的には大学のデータベース講義で
500ページを超える新刊『わかりみSQL』を、技術書典7 (2019-09-22) で出します。 SQL初心者はもちろんのこと、SQLに挫折した人こそ読んでもらいたい入門書になってます。 (好評だった『オブジェクト指向言語 解体新書』のSQL版だと思えばだいだいあってます。) 新刊の紹介はこのくらいにして、この記事では「初心者向けの本を書く上で気をつけたこと」と「500ページ執筆を支えるキーボード」の話をします。 初心者向けの本を書く上で気をつけたこと 『わかりみSQL』では、自分が初心者のときに「こういうふうに教えてくれれば良かったのに‥‥」と感じたことをつぎ込んでいます。ある意味、怨念のカタマリみたいな本ですねw 「こういうふうに教えてくれれば良かったのに‥‥」とはどういうことか、紹介しますね。 過程の説明を省略しない 初めと終わりだけを説明されても、あるいは問題点と解決方法だけを説明
Csvq is intended for one-time queries and routine processing described in source files on the amount of data that can be handled by spreadsheet applications. It is not suitable for handling very large data since all data is kept on memory when queries are executed. There is no indexing, calculation order optimization, etc., and the execution speed is not fast due to the inclusion of mechanisms for
スケーラブルな分散SQLエンジンとして大規模データに対して高速なクエリを実現する「Presto」は、2013年にFacebookが公開したオープンソースソフトウェアです。 現在でもFacebookをはじめTwitter、Uber、Netflix、ウォルマートなどがデータ分析などに利用しているとされています。 そのPrestoの開発者たちが、Prestoの開発を促進する団体「Presto Software Foundation」の設立を発表しました。 設立を発表するブログには、Presto Software Foundationの役割を次のように説明しています。 The Presto Software Foundation is dedicated to preserving the vision of high quality, performant and dependable soft
最近、久しぶりにPostgreSQLのクエリチューニングをしていたのですが、その過程で「この本はぜひもっと多くの人に読んでもらいたい」と改めて思い出した一冊がありました。 それは、「SQLパフォーマンス詳解(原題:SQL Performance Explained)」という本です。 SQLパフォーマンス詳解 http://sql-performance-explained.jp/ パフォーマンスチューニング、特にクエリチューニングについて説明する場合、その前提となる知識は広範なものになります。 そのため、自分が頑張って説明するよりも、優れたエキスパートのまとめたコンテンツを活用させてもらう方が、質・量ともに優れたインプットにしていただけるのではないか、と思うのです。 また、この「SQLパフォーマンス詳解」は非常に良い本であるにも関わらず、一般の出版社から出ているわけではないため、それほど積
名前 とりあえず削除フラグ 目的 エンドユーザから見るとデータがないことにしたいけど、実際のデータは消したくない 削除したデータを検索したい データを消さずにログに残したい 誤った操作をなかったことにしたい、直ぐに元に戻したい アンチパターン 例えばis_deletedというカラムがtrueの場合は削除されているとみなす メリット update文ならデータが簡単に元に戻せる気がするのでなんとなく安心 -> 俺のupdate文でなんとかなる!! 起こること SELECTするときには常にWHERE句が追加で必要になり、コードが削除フラグだらけになる 全員テーブル設計に精通してるわけではないので、テーブルによって削除フラグの有無があったりした場合、認識の齟齬を生みやすい 例えばrubyでdefault_scopeを用いて、よかれとおもってコードレベルでデフォルトを変えたらバグがたくさん出てくる
「SQLパフォーマンス詳解」という本を翻訳しました 2015-04-07 題の通り、「SQLパフォーマンス詳解」(原文タイトルSQL Performance Explained)という本を翻訳しました。PDF版と印刷版が上記サイトから購入できます。 (追記 2017年9月から、渋谷のBOOK LAB TOKYOさんでも印刷版を販売していただいています。輸送コストの関係で、サイトから購入するより若干安くなっています) リレーショナルデータベースにおいて、SQLとインデックスがどのように関連し、どのようにすればSQLのパフォーマンスを良くできるのかを解説した本です。特定のデータベース製品に焦点を当てた本は多数ありますが、この本ではOracle Database、PostgreSQL、MySQL、SQL Serverの4つのメジャーなリレーショナルデータベース製品を同時に扱っていて、それぞれのク
「RDBにおけるバリデーションをリレーショナルモデルから考える」という、なんとも捻りも面白みもないタイトルである。だが、RDBとValidationという2つが相容れないものだということを知っている人には、割と琴線に触れる話かも知れない。 正直なところ、現在私はデータベースエンジニア一直線なので、アプリケーション開発におけるセキュリティというのは門外漢であると言って差し支えない。しかもイベントにはあの徳丸浩氏(バリバリの本職)も発表されるというではないか!!順番的には徳丸氏の次に話したのだが、徳丸氏はSQLインジェクションの実演までするというガチっぷりである。 「場を白けさせてしまうのではないか・・・」 「ガチの人から特大のマサカリが飛んでくるのでは・・・」 そんな想いを脳裏に抱きつつ発表に望んだのであった。 今回の持ち時間は20分と短めであったが、あまりたくさん話したいネタも無かったので
前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検
なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S
トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く