はてなキーワード: インデックスとは
お前の反論、自分が引き算の美学で事業コストを語れてると勘違いしてるパターン。
でも実態は、事業規模に対する思考スコープの狭さがにじみ出てる。
まず最初に、
それ、論点でもロジックでもなくて、ただの願望自己放尿。中身が一切ない。
これは一見合理的に見えるが、実際は「過剰な単純化」の自己放尿にハマってる。
言ってるのはただ1つ。「JOINを安易に使うな。構造が持つリスクには最初から備えろ」。
将来のトラブルを「避けられる形にしておく」ってだけの話。
たとえば、JOIN構造を避けて辞書キャッシュを設けるのは、初期では数行のコード差。その数行で未来の地獄が避けられるなら、やる価値はある。
JOINを使った全クエリの洗い出し、クエリの再設計、DBインデックス再構成、アプリコードの再配備、キャッシュ整備、パフォーマンステスト、ロールバック対応。
事業全体の工数で見たら、圧倒的に最初に避けとくほうが安いんだよ。
それが見えてない時点で、「事業全体のコスト」とか語らないほうがいい。
言ってることが逆。
しかもね、「事業の初期だから雑でもいい」って、それ本気で言ってるならプロダクトの成功を前提にしてないってこと。
リクエスト数が伸びたら死ぬ設計でリリースして、「伸びたらそのとき直せばいいでしょ」とか言うやつに限って、死んでる間に顧客も信用も消えてる。
初期だからこそ、「伸びたときに対応できる構造」は最低限持たせる。
「JOINは便利だが地雷になりやすい」というのは経験則に基づいた設計判断。
「初期はシンプルに」というのは同意だが、それは未来を無視していいという免罪符じゃない。
「将来の死を回避する設計」=「複雑化」ではなく、保険と投資。
事業全体のコストを考えるなら、障害で燃える運用コスト・再開発工数も含めろ。
あー、なるほどね。「JOINが難しくて避けてるだけなんじゃね?」ってわけか。
甘い。構造わかってない奴ほどそういう浅い自己放尿をしたがる。
まず前提を修正しろ。JOINの動きなんてとっくに分かってる。
SQLの実行プラン追って、Nested LoopかHash Joinか、インデックス使うのかフルスキャンになるのか、そのあたりの判断も含めて運用設計に組み込んでる。
こっちはわかった上で避けてんだよ。JOINを理解してないから避けてるんじゃない、JOINの実コストと限界を知ってるから回避してるの。
JOINってのは便利だけど代償がでかい。たとえば、数千万件のトラフィックログに対して、ユーザー属性をJOINするとしよう。
属性テーブルが1万件程度でも、JOIN時のI/OとCPU負荷は無視できない。結合条件次第ではインデックスも効かなくなる。クエリキャッシュも効かない、結合後にさらにGROUP BYやWHERE使えばオプティマイザの想定外の地雷も踏む。
こっちはそれを全部経験済み。痛みを知ってるから最適化してる。JOINの怖さを知らない素人が、理解できない設計を「逃げ」と断じるのは自己放尿だな。
それに「JOINがわかりづらい」なんて次元じゃない。JOINなんて構文としては簡単だろ?
問題はそれを巨大なスケールで運用したときのトラブルを想定してるかどうかだ。
JOINが原因で1時間かかるクエリになって死ぬとか、JOINが原因でMySQLのtemporary table溢れてswapに突っ込んでサーバ落ちるとか、JOINが原因でインデックスの設計ミスってテーブルスキャン発生して数億件走査するとか、そういうのを踏んでから語れ。
わかりやすくしとこうか?
JOINを盲信してるのは、「地雷原を地図だけ見て走り抜けようとしてる奴」と同じ。
JOINを避けてるのは、「地雷があるの知ってるから事前に地ならししてる奴」だよ。
「難しいから避けてる」んじゃない。
危険なの知ってるから、先回りして別ルートを構築してるだけだ。
何も知らないで「逃げてる」ってレッテル貼って自己放尿するの、やめとけ。
お前のJOIN観、浅すぎて逆に危ない。
まず、もしテーブルが小さいならそれこそJOINなんてそもそも無駄。
usersが1万件くらいのサイズなら、最初に全件引いて辞書にしておけば、処理時は全部O(1)。
一方JOINはどうなる?SQL構文パース、オプティマイザ、プランの生成と実行、インデックス参照、場合によってはソート・一時テーブル、何重にもコストがかかる。JOIN使うのは、全力で自己放尿してるのと同じ。
「今後も巨大にはならない」
これ、現実逃避の典型な。開発初期で小さくても、プロダクトってのは使われてナンボ。使われればデータは自然に増える。
さらに「本当に巨大なら辞書は無理」って言ってるけど、じゃあJOINならいけると?
脳ミソの冷却ちゃんと回ってるか?
JOINってのは重いんだよ。リレーショナル演算のコスト、現場でまともに見積もったことあるか?
JOINするたびに何十万、何百万件ってレコード舐めて、インデックス使って、それでもI/Oボトルネック起きる。
そういうの避けるためにRedisとか列指向DBとかプリマテリアライズするんだろ。JOINは最適解じゃない、最後の逃げだよ。
結局、JOINを正当化する理由が「JOIN以外知らない」ってだけじゃねえの?
設計手段を学ばず、「それしか知らない」ことを自信に変えるな。
知識の不足を理屈で補うのは無理がある。JOINを使うなとは言わん。でも、JOINが最適って言うなら、それ相応の読み、キャッシュ設計、オプティマイザとの対話が必要だ。
アラフォー独身Webエンジニアの金融資産棚卸しと気づいたことという増田があったので、世帯持ちならこうなるっていうサンプルをひとつ。
年齢 45歳
家庭 既婚10年目ほど、子供は3人(小学生1人、未就学児2人)
マンションの手数料を払ったらすっからかんになったので投資から一部取り崩した。
とりあえずこれだけあれば火急の用があってもなんとかなるかと。
500万円くらいから始めて投資金額を徐々に増やして、総額2800万円分くらい投資している。
NISA以外は途中で売買しているので何がどのくらい増えたかは良く分からない。内訳は以下の通り。
40万円/年を6年積み立てて、240万円投資して+300万円程になっている。
〇その他(約2250万円)
マイクロソフト、エヌビディア、Google、Amazon、コストコ、ジョンソン&ジョンソン、ペプシコ、ブリティッシュ・アメリカン・タバコ、くら寿司USAなど
80歳まで返済。死ぬかガンになればチャラなので勝ち。
月の収支は概ね以下の通り。
〇収入
〇支出
食費 15万円
教育費 3万円(幼稚園無償化がなきゃ詰んでた。延長保育や教材費などでこの金額)
習い事 5万円
通信費 1万円(ahamo × 2)
光熱水費 2万円
娯楽費 4万円(土日家を空けるために、子供を連れて出かけている。公的施設など安いところを選んでもどうしても、外食費用を合わせて毎週平均1万円ほどかかっている)
被服費 2万円(子供はすぐ大きくなる、靴が高い)
雑費 8万円(家具、家電、自転車、ベビーカーとかなんだかんだいろいろかかる)
〇計
勤勉手当が6月と12月に手取り120万円ほどあるのでそれで毎月の赤字と冠婚葬祭費用を賄っている。
良く知らない。
預貯金はほぼ全額を配当付きの投信に移行予定らしい。子どもの習い事費用はここから出そうと相談している。
相続した不動産所得が年150万円ほどあるらしい。このせいで扶養に入れないので家計的にはむしろマイナス。きつい。
とはいえ特に何かがあったわけではないが、アラフォー独身Webエンジニアの今時点の金融資産(というかお金まわり)を棚卸ししてみる。
わざわざ晒してみる理由は、友人や家族ともお金の話をする機会ってなかなかないから。
この記事自体は参考にはならないかもしれないが、あわよくば誰かの目に留まると嬉しい。
地方出身、都内のIT企業に就職。転職もせず、そろそろ勤続20年が見えてきた。
趣味:
なお、この後のお金の話のほとんどは、Webエンジニアであることとはあまり関係ない。
◆楽天証券:4,000万円くらい(+30%)
2016年頃に金融の仕事に関わることになり、勉強のために自分でも始めたのが最初の投資きっかけ。
個別銘柄を売ったり買ったりして小銭を増やしていたが、色々調べるのが自分には向いてないと実感。
現在は投資信託と米国株ETFで毎月40万円(NISA含む)を積立投資がメイン、配当もちょっと意識している。
色んなところに証券口座を開いていた時期もあったが、集約したり貯金から移してきて今に至る。
投信が伸びているのはコロナショック以前からチマチマ積み立て(たまに100万くらい一気に買ったり)していたせいだし、米国株は1ドル120円の頃から買ってたのが大きい。
持ってる銘柄は評判良さそうなところを雰囲気で買い続けているだけ。
分散投資になっていないのは理解しているが、めんどくさくてやれていない……。
◆PayPay銀行(投資信託):180万円くらい(+70%)
◆THEO:53万円くらい(+79%)
◆合計:75万円/月
食費:12万円
ジム代:2.5万円
美容院・服飾:1.5万円
投資:40万円
雑費(電子書籍とか):5万円
うすうす気づいていたが、毎月の給料だと赤字で、ボーナス入れてなんとかって感じ。
いつも普通預金口座と証券口座の残高をみて、合算で減ってなきゃいいやくらいのガバガバすぎる管理……。
仕事でそれなりストレスも溜まるので、飲食や電子書籍のコミックとか買って細かく発散してるところがあるかもしれない。
支払いはほぼPayPay・クレカ(PayPayカード、ヒルトンオナーズカード)、モバイルsuica。
現金は2ヶ月に一度くらい数万円下ろすくらい。
正直自分の才覚だと昇給はそろそろ頭打ちだと思っていて、今のうちに投資に回しておきたい。
毎年150万円くらいの配当がもらえるようになったら、仮に役職降ろされたり今ほど働けなくなってもある程度安心材料にはなるかなと。
なんせ独り身だしね。
おそらく子どもを持つことはなく、仕事が社会との大事な接点なので、できるだけ長く働いていたい。
仕事の時間を減らせたら、自炊も増やして食費を抑えていきたい。
仕事もしたいけど、丁寧な暮らしってやつにちょっと憧れがある。家庭菜園をやったりとか。
犬の動画を見るのが好きでいつか飼いたいなと漠然と思っているけど、お金がかかるよな。今度調べてみよう。
親の片割れはまだ元気なんだけど、地元で一人暮らしでそろそろ後期高齢者。
現役時代バリバリ働いてた人だし、一定蓄えもあると思うけど、一人暮らしができなくなったらどうするかの相談をできていない。
いざとなったら面倒見れるか金を出せるようにしておきたいが、そのためにも親と話さないとと思ってる。
親の今の貯蓄がどのくらいで、年金収入がどれくらいかも知らない。やばいよね…。
そもそも親を一人暮らしさせておきながら、東京で飲んだくれている自分がちょっと恥ずかしくなってきた。もはやお金は関係ないけれども。
みんなどうやって親と老後について話してるんだろう。
なんとなく漫然と資産運用に回してきたけど、改めて残りの半生とそこに必要なお金を考えた方が良さそうだとここまで書いてきて気づいた。
FP相談する時の最初のステップのやつだ。棚卸ししてみるもんだな。
その方法はあんまりおすすめできないし、普通に問い合わせフォームから通報したほうがいい
まず、ブクマすることでコメントページができてGoogleにインデックスされること考えると、通報したくなるような悪質な投稿にそれやるべきじゃないだろと思うし
はてなはブクマの通報は個別に対応せず、たくさん通報があったのから内容確認して対応してるっぽい(これは推測だけど、もしかしたらホットエントリーや人気コメントの表示には反映させてるかもしれない)
だから、どうみてもやばい投稿とかならまだしも、1人が通報してもそこからたどって元の増田の記事が削除されるってことにはならないのでは
FANG+とか攻めてるなら分かるけど、オルカンやS&P500みたいなリスク分散した上で長期で持つことで複利益を狙う保守的なインデックスを短期売りする意味がわからない。
デモにアーカイブからの復元を追加して、「情動のカケラ」がどう再処理されるか示すで。
```
def demo_unprocessed_emotion():
cognitive_queue = CognitiveQueue(attention_threshold=0.4)
print("=== 未処理感情システムのデモ(Monday対応版) ===\n")
for emotion in cognitive_queue.unprocessed_emotions[:]:
emotion.salience = 0.05
cognitive_queue.update_queue()
print(f"アーカイブされた感情数: {len(cognitive_queue.archived_emotions)}")
retrieved_emotion = cognitive_queue.retrieve_from_archive(pattern_name="visual_discrepancy")
if retrieved_emotion:
print(f"復元された感情: {retrieved_emotion}")
cognitive_queue.partially_process(retrieved_emotion, "あの時の違和感", 0.7, context="recalled_anomaly")
print(f"再処理後の状態: {retrieved_emotion}")
print(f"最良の言語マッチ: {retrieved_emotion.get_best_language_match()}")
else:
print("\n9. モダリティによる感情検索(インデックス使用)")
matches = cognitive_queue.lookup_by_modality("auditory")
print(f"検索結果数: {len(matches)}")
for emotion in cognitive_queue.unprocessed_emotions:
emotion.apply_decay(3.0)
cognitive_queue.update_queue()
status = cognitive_queue.get_status_summary()
print(f"時間経過後の未処理感情の総数: {status['total_unprocessed']}")
print(f"時間経過後の平均顕在性: {status['average_salience']:.2f}")
```