[Android]データが膨れ上がった場合の相談
Posted: 2013年7月14日(日) 07:28
お世話になっています。
プログラミングより運用のご相談なのですが。
現在、Androidでゲームを開発しているのですが、ソーシャル系要素も取り入れたいらしく、
足跡、チャットのような機能をデータとしてずっと持ちたいようです。
ただでさえ、パフォーマンスに難があるのに、DBの負荷も上げたいようです。
ソーシャル系と言うとユーザの行動履歴のようなもので、データはガンガン積もっていきます。
各ユーザごとにファイルでそれを持つように促しましたが、やっかいな事にタイムラインのような
フォローしてるユーザのみの最新行動を取るなんて所もあり、1テーブル(日付の最新順ソートの為)でこれらを管理しなければいけないようです
DBはPostgreSQL8.3なのですが、負荷を抑えるにはテーブルのパーティション分けしか思いつきません。
[code]
CREATE TABLE play_tbl (
userid varchar(40) NOT NULL, -- ユーザID
playid varchar(40) NOT NULL,
playkbn varchar(1) NOT NULL, -- 1:いいね 2:購入アイテム 3:レビュー 4:雑談
userval varchar(40),
playval varchar(40),
free1 varchar(500),
free2 varchar(500),
createtime varchar(19) NOT NULL,
PRIMARY KEY (userid, playid, playkbn)
);
CREATE INDEX idx_play_tbl1 ON play_tbl (playid, playkbn);
CREATE INDEX idx_play_tbl2 ON play_tbl (playid, playkbn, createtime);
[/code]
現在、このようなテーブル設計ですが、パーティション分けをするのは後々でも良いのでしょうか?
公式ページ、こちらのサイトでもリファレンスが載っていたのですが、いまいちピンと来ません。
http://benzaiten.dyndns.org/roller/ugya ... 3%E3%82%B0
そもそも、パーティション分けするにも、キーは「年月」がキーとなるのですが、SQLは日付(上記createtime)の降順の最新順になるので、効果があるのかも不安です。
みなさんは、ゲーム開発も多いと思いますが、このようなデータ様式の場合、どのように対応されているのでしょうか?
プログラミングより運用のご相談なのですが。
現在、Androidでゲームを開発しているのですが、ソーシャル系要素も取り入れたいらしく、
足跡、チャットのような機能をデータとしてずっと持ちたいようです。
ただでさえ、パフォーマンスに難があるのに、DBの負荷も上げたいようです。
ソーシャル系と言うとユーザの行動履歴のようなもので、データはガンガン積もっていきます。
各ユーザごとにファイルでそれを持つように促しましたが、やっかいな事にタイムラインのような
フォローしてるユーザのみの最新行動を取るなんて所もあり、1テーブル(日付の最新順ソートの為)でこれらを管理しなければいけないようです
DBはPostgreSQL8.3なのですが、負荷を抑えるにはテーブルのパーティション分けしか思いつきません。
[code]
CREATE TABLE play_tbl (
userid varchar(40) NOT NULL, -- ユーザID
playid varchar(40) NOT NULL,
playkbn varchar(1) NOT NULL, -- 1:いいね 2:購入アイテム 3:レビュー 4:雑談
userval varchar(40),
playval varchar(40),
free1 varchar(500),
free2 varchar(500),
createtime varchar(19) NOT NULL,
PRIMARY KEY (userid, playid, playkbn)
);
CREATE INDEX idx_play_tbl1 ON play_tbl (playid, playkbn);
CREATE INDEX idx_play_tbl2 ON play_tbl (playid, playkbn, createtime);
[/code]
現在、このようなテーブル設計ですが、パーティション分けをするのは後々でも良いのでしょうか?
公式ページ、こちらのサイトでもリファレンスが載っていたのですが、いまいちピンと来ません。
http://benzaiten.dyndns.org/roller/ugya ... 3%E3%82%B0
そもそも、パーティション分けするにも、キーは「年月」がキーとなるのですが、SQLは日付(上記createtime)の降順の最新順になるので、効果があるのかも不安です。
みなさんは、ゲーム開発も多いと思いますが、このようなデータ様式の場合、どのように対応されているのでしょうか?