2010-12-14 5 views
1

問題をスケーリング/ Facebookのさえずりに多少似ています以下。フォロワーモデル

問題A:成長しているデータセットでうまく働いている人が追加したアイテムのクエリを保持するにはどうすればよいですか?

問題B:地理的に分散したトラフィックが発生しています。オランダとブラジルの大規模なユーザベース。おそらく、複数のデータセンターにわたるデータベースを可能にする必要があるでしょう。

私たちはdjango/pythonスタックで動作しています。既にエッジサーバーのキャッシュを実行しています。 (匿名ユーザーはキャッシュされたバージョンを取得し、ログインしたユーザーのバージョンは第2レベルのテンプレート解析サービスで最初に実行されます)

答えて

1

問題A:成長しているデータセットでうまく動作するユーザーが追加したアイテムのクエリを保持する方法?

のデータセットで始まる(誰が私のフォロワーであるか、誰がフォローしていますか)。これらの値をタプルとして保存し、いくつかのSQLデータベースに分割することができます(実際には、実際のセグメンテーションが実際にはtwitterサイズのデータ​​ベースでも必要です)。これは追跡される人々のリストを与えるでしょう。第2に、フォロワーによってソートされたフォロワー - >アイテムのテーブルを簡単に照会できました。膨大なデータセットを必要に応じて分割することもできます。

問題B:地理的に分散したトラフィックが発生しています。オランダとブラジルの大規模なユーザベース。おそらく、複数のデータセンターにわたるデータベースを可能にする必要があるでしょう。

マスタデータベース(クラスタ)とスレーブデータベース(クラスタ)を指定し、マスタからスレーブにデータをレプリケートできます。ただし、これはデータが常にマスターデータベースに保存されることを意味します。データクエリはローカルで実行できます。

もう1つの選択肢は、マスターマスターセットアップでデータベース(クラスタ)を実行することです。しかし、これは一般的にそれが価値があるより多くのトラブルです。