- KADOKAWA (2025年1月27日発売)
本棚登録 : 154人
感想 : 6件
本ページはアフィリエイトプログラムによる収益を得ています
Amazon.co.jp ・本 (256ページ) / ISBN・EAN: 9784046072153
作品紹介・あらすじ
【どうすれば達人のようなコードが書けるのか?】
著書累計20万部超、データベース界の達人・ミック氏が、
「センスの良いSQLを書く技術」を身につけるための思考法や勉強法を大公開!
コーディングや設計を行う上で知っていると一生役に立つ、
SQLやRDBの理論や哲学をわかりやすく解説しています。
【達人が考えるセンスの良いSQLとは?】
目指すのは、無駄がなく、可読性が高いエレガントなSQLです。
メンテのしやすさ、パフォーマンスの良さにつながるからです。
本書では、エレガントでかつハイパフォーマンスなSQLを実現する技術として、
・SQLの書きやすい順序
・効率的なクエリの書き方
・保守しやすいコード
・適切なインデックス戦略
・実行計画の重要性
・無限のスケーラビリティ
等を解説しています。
【本書の特徴】
1テーマごとに、まずサマリー+イメージイラストで
おおまかな内容を直感的につかめるよう工夫しています。
センスの良さを身につけるためには、DBやSQLの成り立ちや
その根底に流れる思想を理解することも必要です。
Chapter 01、02では、こうした根源的な問いを多く解説しています。
Chapter 03では技術のアップデートをキャッチアップし、センスを磨きます。
Chapter 04ではDB/SQLを扱うエンジニアとしての心構えを説き、
センスを磨き続けるコツを解説します。
コードは最小限、典型的でわかりやすいものをチョイス。初心者でも大丈夫。
コラムでは、シリコンバレーでの実務経験などを踏まえた
SQLに関する知見を掲載しています。
解説の最後には、実務のどういうシチュエーションで活きるのか、
学習したことのアプトプットのイメージをまとめています。
感想・レビュー・書評
-
タイトルからしてSQLを書くテクニックについて書いてあるかと思ったのだけど、中身はデータベースを仕事をしてきた人のエッセイ集という感じ。
といっても、こういた内容の本は珍しいので、面白く読めた。
データベースの歴史から書かれており、初めて知ることも多かった。AIの本ではよくその歴史から書かれてることってあるけど、データベースの本では歴史が書かれてある本って珍しいようにもう。
後の章で、著者が大学時代は歴史を研究しており、今でも歴史的アプローチで行っているということなので、普段から歴史を知るようにしているのだろうなと思った。
もちろん、SQLの歴史についても書いてある。驚いたのが、再帰SQLが1999年に標準SQLに追加されてたということ。自分自身が最近知った機能なので、追加されたのも最近だと思ったら、ウィンドウ関数やMerge文より古いのか。
最近でも、JSON型とかグラフクエリとか、いろいろ進化しているんだろうなと思った。
著者としては、全称量化子の「FORALL」を導入してほしいとのこと。確かに、一つでも一致するものがある「EXISTS」はあるのに、すべてが一致するという「FORALL」はほしいかもしれない。
その代替方法として、すべて一致しないという否定のSQLをNOT EXISTSで判断していたり、HAVING句やウィンドウ関数を使った方法が書かれていて、勉強になった。
「ウィンドウ関数を使った全称量化による解」のSQLに記載のあった「WINDOW DPT AS (PARTITION BY department)」ってなんだと思って調べて、SQLにWINDOW句というものをあるのを知った。何度も似たようなウィンドウ関数を書く場合には使えるのかな。
でも、一つだけなら書くメリットってないような気がする。定義と記載している位置が離れてるから、何か分からなくなりそう。
自分も大学時代に論理学という授業を受けたけど、「ならば」の結果はなかなか慣れなかったなと。
正直、今でもちゃんとどういうことか覚えてない。ただ、このへんの話はSQLに関係が無いようには思った。
サロゲートキーとしてUUIDを使うというのは、機会があればやってみたいと思った。まあでも、基本IDENTITY列でいいようには思う。アプリケーション側で作る必要があるなら、UUIDのほうがいいのかな。
NewSQLはなんとなく聞いたことがあったけど、よく知らなかったので勉強になった。まだまだ発展途上という感じだけど、可用性に優れているのかな。
名前が英語でゴキブリという意味のサービス(CockroachDB)があるらしく「製品アイコンもゴキブリを模していてキュートです」とのことだけど、キュートなのだろうか?
日本進出はしてないらしく、著者としては日本進出してほしいそうなのだけど、日本人に受け入れられるのか?
入れ子集合というモデルは、面白いと思ったけど、使いどころは難しいように思う。 個人的には、再帰CTEでいいように思った。
最後の4章では、著者のエンジニア人生の振り返りが書かれてあったのだけど、これがなかなか面白い。
アメリカ人との仕事の向き合い方がいろいろ書いてあって、価値観が大きく違う人と働くのは大変だなと思った。
アメリカ人の働き方はともかく、個人的には、日本はもっとローコンテキストな社会にならないかなと思う。
知識の属人化とか、本当やめたほうがいいよなと(まさにそうなってしまっているので、保守契約によって上司か自分のどちらかは出社しないといけないようになってしまっている)。
特に、怒りの話は、アメリカ人らしいなと思った。今の日本だとすぐにパワハラといわれそうだけど、アメリカではそこまでコンプラ意識は高くないのだろうか。
自分は怒りを武器として使わないようにしたいけど、怒りを武器として使ってる人と仕事しないといけないこともあると思うので、うまく気にしない技術を身に着けたいと思う。どうやったら、スルースキルを身に着けられるのだろうか。
ところで、著者が大学生の時に2ちゃんねるにはまっていたと書いてあって驚いた。
アイコン画像のイメージからして、50代後半の定年間近かと思ってたけど、もっと若かったのか(大学時代に2ちゃんねるを作ったひろゆきが48歳なので、同じぐらいか?)
『達人に学ぶSQL』を書いていた時って、まだ20代だったのか。すごい。詳細をみるコメント0件をすべて表示 -
序盤のDBの歴史とか面白い。
普段からRDB使ってるけど知らないことが多くて勉強になった。
著者のエッセイ的な話も面白くて好きだ。 -
SQL自体に関することは一部で、歴史や概要、またデータベース全般について広く紹介されている。後半には著者のWikiが書かれており、米国人と働く上での参考になる
-
優れたSQLの書き方指南書のようなタイトルをしているけど、中身はSQLの歴史やトレンド、そして筆者の社会人人生の振り返りだった。DBに少しでも触れる人なら誰でも読んで損はないと思う。
-
リレーショナルデータベースの基本概念
- リレーショナルデータベースの定義: データをテーブル形式で管理し、行と列で構成される。
- SQLの役割: 構造化クエリ言語(SQL)は、データベースとのインタラクションを簡素化し、プログラミングの知識がないユーザーでも利用可能にする。
歴史的背景
- 初期の実装: 1970年代初頭にIBMがSystem RとIngresを開発し、リレーショナルデータベースの実用化を証明。
- 商業展開: 1980年代にはOracleやInformix、Sybaseなどの企業が商用リレーショナルデータベースを次々と展開し、SQLが標準化された。
SQLの進化と標準化
- ANSI標準: 1986年にSQL-86がリリースされ、以後約5年ごとに新たな標準が策定されている。最新の標準はSQL:2023。
- 言語の持続性: SQLは、ユーザーのニーズに応じて進化を続けており、現在も高い人気を誇る。
RDBの特性と価値
- ユーザーフレンドリー: データが2次元表形式で表示され、SQLを用いることで簡単にデータ操作が可能。
- データ整合性: ACID特性(原子性、一貫性、隔離性、持続性)を保持し、トランザクションの管理が容易。
SQLの利用
- 基本的なクエリ構文: SELECT文、INSERT文、UPDATE文、DELETE文など、基本的な操作を通じてデータを管理する方法。
- サブクエリと結合: 複雑なデータ取得を可能にするための手法として、サブクエリやJOINが使用される。
データベースの新たなトレンド
- NewSQLの登場: RDBの特徴を保持しつつ、NoSQLのスケーラビリティを兼ね備えた新しいデータベースアーキテクチャが注目されている。
- ビッグデータとの関係: ビッグデータの分析には、RDBだけでなく、NoSQLやNewSQLといった新たなアプローチが求められる。
SQLの論理的基盤
- 述語論理と集合論: SQLは述語論理に基づいており、条件付きのデータ操作が可能であることが強調されている。
- 量化の扱い: SQLでは、EXISTSという述語が存在量化子として使用され、データの存在を確認するために利用される。
SQLの課題と未来
- 実装の互換性問題: ベンダーごとのSQL実装の違いが、標準化の障害となることが指摘されている。
- 将来への期待: SQLの持続的な進化と、全称量化子の導入など、さらなる機能拡張が期待される。
結論
- RDBとSQLの重要性: 現代のデータベース管理において、リレーショナルデータベースとSQLは依然として中心的な役割を果たしている。
- 技術の進化: データ管理の手法や技術は常に進化し続けており、今後も新たな挑戦と機会が待っている。
著者プロフィール
ミックの作品
