ルータの仕様?にまいった話

とあるソシャゲをやっていたら、今朝になって突然起動しなくなる。再起動だのキャッシュ削除だのやってもだめで、これはサーバ側のデータ破損かなと思いクラッシュレポートを送る。

そんなわけで結構凹み気味で出社したのだが、昼休みに外で起動したら問題なく動いてしまった。

・・・結論からいえば、ルーターがネットワーク経路をキャッシングしてたのが問題だった模様。ルータのファームウェアアップデート&再起動で解決。

blue1st.hateblo.jp

前にもはてなブログのhttps化で同じの踏んだんだけど、なまじ他のウェブなんかは問題ないから原因が特定しづらいのなー。


組織図のような長さが変動する要素をどうDBに収めるかなーと考えていて、経路列挙モデルなるものを学ぶ。つまりは要素までの経路を全て保存しておくという単純なアイディアではあるが、なるほど実用的には使いやすい。

id path value
1 /1 ファイヤー
2 /1/2 アイスストーム
3 /1/2/3 ダイアキュート
4 /1/2/3/4 ばよえ~ん

連なる親要素をひくときは

SELECT
  GROUP_CONCAT(value) 
FROM table
WHERE 
  (SELECT path FROM table WHERE 〜) LIKE CONCAT(path, '%/');

みたいな感じでいけるし、逆にすれば子要素の列挙もできる。

初期登録が自身のidを用いてpathを組み立てる必要があるので面倒ではあるが、そこまで激しく更新されない用途であれば使いやすそうだ。


直感で思いついていた親要素のIDを持っておく方式は、再帰クエリが書けないMySQLにおいてはアンチパターンだった。

SQLアンチパターン

SQLアンチパターン


ここ数日じんわり頭痛がしてたんだが、とうとう喉にも痛みが出てきて、本格的に風邪っぽい雰囲気。有休今月はもう使いたくないんだが・・・