どこかで見たことあったりするスキーマだったりしませんか?!
http://yapcasia.org/2014/talk/show/ce6e777e-fb91-11e3-b7e8-e4a96aeab6a4
| -- ゲームの終了条件まで"対戦"を行う、"ゲームプログラミング"をPerlで書く。 | |
| -- Battle.pm / Battle::Timelime / Battle::Fighter | |
| -- 定時対戦 -> lockを書けないで済むようにする/ 障碍検知、復旧のしやすいポリシー | |
| CREATE TABLE battle_timeline ( | |
| .. | |
| timeline_msgpack BLOB NOT NULL COMMENT '対戦結果データ', | |
| ) |
| -- 「とりあえず、id いれよう」 から covering index | |
| -- redisのfallbackの用意 | |
| -- LeaderBoard | |
| CREATE TABLE xxx_ranking ( | |
| user_id INTEGER UNSIGNED NOT NULL, | |
| xxx_id INTEGER UNSIGNED NOT NULL, | |
| score INTEGER UNSIGNED NOT NULL, | |
| PRIMARY KEY (xxx_id, user_id), | |
| INDEX (xxx_id, score) | |
| ) |
どこかで見たことあったりするスキーマだったりしませんか?!
http://yapcasia.org/2014/talk/show/ce6e777e-fb91-11e3-b7e8-e4a96aeab6a4
| # relation / id chain / BK | |
| my %id2foo = map { $_->id => $_ } @{$db->search(+{ ... })}; | |
| my %id2bar = map { $_->id => $_ } @{$db->search(+{ id => [keys %id2foo] }); |
| -- lock | |
| CREATE TABLE user_status ( | |
| user_id INTEGER UNSIGNED NOT NULL, | |
| action_pt INTEGER SIGNED NOT NULL COMMENT '行動力', | |
| ... | |
| ) | |
| UPDATE action_pt = action_pt - 10 |
| -- attr_type でのtable振りわけ / BK | |
| CREATE TABLE xxx_incentive ( | |
| id | |
| threshold | |
| attr_type ENUM('aaa', 'bbb') NOT NULL, | |
| attr_id INTEGER UNSIGNED NOT NULL | |
| ) |