使える論理削除への道(1) それは論理削除の問題なのか

削除フラグ(というか「論理削除を削除フラグだけで実装すること」)批判は何度も見てきたが PostgreSQLアンチパターン これ見るともはや論理削除自体が闇扱いになってしまったようだ。 闇だろうと何だろうと論理削除(というドリルが提供する穴)は要件の実装…

主キーが「圧倒的多数の関数従属性が成立しないことを保証する」ものならば、受注ヘッダに顧客名を置いてはならないのだろうか

渡辺先生がミステリアスな記事をupしている。 http://watanabek.cocolog-nifty.com/blog/2014/08/post-b7d8.html つまり主キー設計というものは、「いくつかの関数従属性が成立することを分析する仕事」というよりは、 むしろ「圧倒的多数の関数従属性が成立…

「ドメイン駆動設計」感想(1) - なぜファットモデルになるのか

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型本購入: 19人 クリック: 1,360回この商品を含むブロ…

生きているうちに自然キーvsサロゲートキー問題に決着を付けたい(1)

営業のアプローチ方法にA,Bがあるとして(例えば「礼状は手書きで出す」「礼状は印刷して出す」とか)、Aの成約率が10%でBのそれが5%なら、「Aしかやらない」というのは悪くない選択だろう。だが我々の仕事は営業とは違っている。 ある量産品の製造方法にA,Bが…

事実と真実はどう違うか。また裁判官のキャリブレーションについて

俺が通ってるジムのステアマスターにはテレビが付いていて、いつもテレビ見ながらをステアマスター漕いでるんだけど、この前北斗の拳の再放送見ようと思ってテレビ点けたら放送大学の講義をやっていて、これがえらく面白かった。 それは科学哲学の講義で、テ…

うっかりコンサルタントを名乗ると税金取られるのか?

個人事業税てあるでしょう。何となく役所の許認可事業が対象だと思ってたんだけど、埼玉県のホームページ見たらぜんぜん違っていて、 実はしれっとコンサルタントとか入ってるのな。 ということは、個人事業の開業届に「システムコンサルタント」とか「ITコ…

SQLアンチパターン「健忘症的サロゲートキー」の提案

SQLアンチパターン作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る本書の著者はサロゲートキーに対して消極的なのだから、…

SQLアンチパターン「IDリクワイアド」の再検討

SQLアンチパターン作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る話題のSQLアンチパターンの目次に「アンチパターン:す…

年間の生活費を60万円減らす方法

去年3LDKから1DKに引っ越したら家賃が5万円安くなった。 前の家では日当たりの悪い2部屋は物置、和室は洗濯物を干す場所にして、居間に万年床を敷き、夫婦二人でほとんど布団の上だけで生活していた。 テーブルには読みさしの本や仕事の資料が山積し、ソファ…

「等しい」と「重複している」の違い。それらとUNIQUE制約の関係

SQL

SQLを使っていると、あたかもNULLがNULLに等しいかのように見える場面が多々ある。 例えば DISTINCT や GROUP BY で複数のNULLが1個に集約されるとか。あるいは集合演算子(UNION, EXCEPT, INTERSECT)でのNULLの扱いとか。 SQL92の解説書標準SQLガイド (アス…

「NULLがUNIQUE制約に縛られないことを利用する」のは、正当なNULLの使い方

SQL

リンク先は「UNIQUE INDEXを振った列に複数のNULLを投入できること利用して、ユニークであるべきユーザIDの使い回し(=退会したユーザのIDを新規ユーザに開放する)を実現する」という話。 アクティブなユーザ名はユニークにしたいけど削除されたユーザの情報…

データモデル自体はアジャイルなのだが...

全体に与える影響が極めて大きく、後戻りしにくい「スポンジ層」というのが存在する。そのひとつが渡辺さんの言われているデータモデルである。データモデリングなきアジャイル開発は危ういか?:An Agile Way 平鍋さんが「(業務システムの)データモデルの変…

プロとアマの境目について語るな。一流と二流の違いを語れ

勝手ながら補足させていただくと、 手塚貴晴さんという建築家がいる。一種の天才なのだと思うのだが、5年ほど前、TVで見た光景が忘れられない。 部下の設計者が徹夜で作ってきた建築模型を一目見るなり「これはゴミだね」と言って、ガシャリと壊してしまった…

InnoDBのclustered indexはあまり役に立ってないんじゃないのか

縁あって仕事でMySQLを使いそうなので、いまのMySQLがどうなっているのか少しずつ調べている。 で、現在のデフォルトストレージエンジンであるInnoDBの設計思想に困惑している。 InnoDBは主キーを強制的にclustered indexにするとのことだが、それって何の役…

「索引列を演算するとインデックスが使えなくなる」これはなぜなのか

例えばテーブルt1の列col1にインデックスがあり、以下のクエリでそのインデックスが参照される場合、 select * from t1 where col1 >= 20 --(1)クエリを以下のように書き換えると select * from t1 where col1*5 >= 100 --(2)インデックスが使えなくなってし…

プログラマの定年が35歳ではないなら一体何歳なのか

「社外でも通用するスキル」のくだらなさについてに丁寧なコメントをいただいので、投げっぱなしにしないでもう一つ先まで考えてみる。 前回書いたことは「ポータブルスキルを『社外でも通用する技術』と考える限り、自社専用スキルとポータブルスキルのどっ…

「社外でも通用するスキル」のくだらなさについて

自分が長い間勘違いしてたから言うんだけど、 最後に「Firm Specific Skill」と「Portable Skill」の違いについて。前者は直訳すれば「企業特殊技能」と いいまして、社員がその企業ならではの技能を磨き、所属企業とのコミットメントを高めながら共に進んで い…

忘れてしまったほうがいいSQLチューニングテクニックについて

SQL

10年ぐらい前はJavaで文字列を連結するときは String ではなく StringBuffer を使ったほうが速いなんて言われてたんだけど、それがテクニックとして有効だったのは「StringBufferを使えばこれこれの内部動作になる」という関係が固定されていたからで、仮にJ…

大山康晴はなぜ強かったのか

羽生善治「決断力 (角川oneテーマ21)」より。 史上最強の棋士が十五世名人の大山康晴先生であることは、誰もが認めるであろう。 大山先生が六十九歳で亡くなる二年前。ガンの手術をしたあと、必敗の将棋を夜中の二時まで 粘りに粘って、最後に催眠術のような…

Teradataの実行計画(1) - 大量データの結合の計画

Teradataの実行計画について少しずつ整理していきます。 今回は大量データの結合の実行計画について。 こんなクエリは、どういう実行計画になっていればOKだろうか。 select * from t /* 1000万件のトランザクション */ inner join m /* マスタ */ on m.c1=t…

Teradata SQLパフォーマンス改善Tips(2) - not in で比較する列にはnot null制約を付ける

こんなSQLでパフォーマンスが出ない場合、 SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c1 FROM t2 )not inで比較してる列=t1.c1, t2.c1 にnot null制約が付いているか確認してみるといい。 もしもc1にnullがあり得ないにもかかわらず、not null制約が抜け…

Teradata SQLパフォーマンス改善Tips(1) - PIを使って結合する

Teradataは、Primary Index(PI)を結合カラムにしたときに結合が最速になる、とマニュアルに書いてある。 以下はこの性質を使ってパフォーマンス改善した事例。 夜間バッチの時間短縮のため、時間のかかっているジョブをチェックしてみると、こんな結合条件の…

見積りが「高い」といわれたらこう返そう

ハリー・ベックウィス「逆転のサービス発想法―見えない商品を売るマーケティング」に書いてあった話。 カフェでピカソを見つけた婦人が、私をスケッチしてくださる?と頼んでみた。 ピカソは快諾し、サラサラと絵を描き上げた。婦人はピカソに、いくらで絵を…

Teradataは単一テーブルから全件返すときもスプールを使う

Teradataで3000万件ぐらいのテーブルをただ全件引いてみると、 select * from t /* 3000万件 */しばらくだんまりになった後で、猛然と結果が返ってくる。 このだんまりの時間に何をしているのかexplainで調べてみると、 3) We do an all-AMPs RETRIEVE step …

Teradataはselect句が返す列数を減らすと速くなる

Teradataで3本以上のテーブルを結合する場合、必ず中間結果のスプールへの(つまりディスクへの)書き出しが発生する。 例えばa, b, cの3本を結合するなら、aとbの結合結果をスプールに書いて、次にスプールとcを結合する。 b, cが件数の非常に少ないテーブル…

Primary Indexは一意に近いほどよい、わけではない

Teradataはいわゆるshared-nothingアーキテクチャを採用していて、1つのテーブルのデータは、AMPと呼ばれる数十台の仮想マシンに分散して格納される。 Teradataは各レコードのキーすなわちPrimary Index(=PI)をハッシュ関数に食わせて、出てきた値からそのレ…

うちの会社は休み放題にすべきだ

勤怠管理なんてやめてしまえばいいのだ。休みたかったら休む。会社に行きたい日だけ行く。そういう会社を目指すべきだ。 行っても行かなくてもいいなら、たまには行きたくなる日もあるだろう。行くのが義務だから毎日行きたくないのだ。 40年前の実証研究で…

小林秀雄が素読について語ったこと

引き続き「人間の建設 (新潮文庫)」から。岡潔との対談の最後に、小林秀雄が素読について語ったこと。 論語を簡単に暗記してしまう。暗記するだけで意味が分からなければ、無意味なことだというが、 それでは論語の意味とはなんでしょう。それは人により年齢…

小林秀雄と岡潔の老人力対決「人間の建設」

一部で評価の高い、おじいちゃん同士の雑談が新潮文庫になったので読んでみた。人間の建設 (新潮文庫)作者: 小林秀雄,岡潔出版社/メーカー: 新潮社発売日: 2010/02/26メディア: 文庫購入: 11人 クリック: 88回この商品を含むブログ (64件) を見るやはり岡潔…

苦しまないと良い仕事はできない

1月は元旦から休みなしで働いてたんだけど、29日あたりだったか、「絶対間に合わねえ」「何でここまでやらなきゃならないんだ」「誰か代わりにやってくれねえかな」「ていうか、やれよ」といったや恐怖感や被害者意識の果てに、久々にあれが来たのだ。 思考…