Twitterを支えるアーキテクチャの本当のポイント

萩原正義氏が語る、Twitterを支えるアーキテクチャで見るべき本当のポイント。先に以下の記事をどうぞ。 なぜTwitterは低遅延のままスケールできたのか ●秒間120万つぶやきを処理、Twitterシステムの“今” http://www.atmarkit.co.jp/news/201004/19/twitter.html 続きを読む
9
Masayoshi Hagiwara @masayh

twitterのsocial graphの実装は単純な対照表なのでグラフのような複雑なデータ構造を辿ることになる1階述語特有の操作になる。高階述語のモデル化とき、このあたりはよく考えました。他にもtowitterのデータモデル設計では古典的な手法がいろいろと使われてます。

2010-04-20 01:56:44
Masayoshi Hagiwara @masayh

Hadoopにしてもno SQLにしてもユースケースを識別し、それを集合演算を始めとするデータ操作に分解して、それぞれの操作に対して最適化を考えるという流れは変わらない。その最適化の中にデータモデルの選択や物理配置の決定が含まれます。twitterの基本設計もこの原則にそっている

2010-04-20 19:56:15
Masayoshi Hagiwara @masayh

twitterの設計で最も優れているのはスケーラビリティというより、タイムラインの範囲でクエリーを制限したりしたスコープの限定にあります。その結果アーキテクチャが単純化。スコープの定義はアーキテクチャを決める上で最初に行うべき重要な意思決定です。140文字というのもスコープ定義。

2010-04-20 19:59:53
Masayoshi Hagiwara @masayh

tweetした文字数が140文字ぎりぎりだと http://twishort.com を使えというアドバイスが来ました。140文字を超えることが書けるようです。すばらしい。

2010-04-20 20:05:22
Masayoshi Hagiwara @masayh

最後に面白いこと。twitterはエンタープライズには進出しないと言ってました。エンジニアの意見だから、本当かどうかわかりませんが。

2010-04-20 20:08:15
Masayoshi Hagiwara @masayh

こういうボトルネックはだめです。 @frsyuki プライマリキーを連番で生成するサーバは専用に用意する

2010-04-21 02:27:35
Masayoshi Hagiwara @masayh

@frsyuki idの生成は最もボトルネックになる部分、これ常識です。しかも連番だからトランザクション実行するでしょう。やってみないとわからないけれど、設計段階でいいアーキテクチャではないと思います。

2010-04-21 02:33:48
Masayoshi Hagiwara @masayh

この特性はもっと応用範囲は広いです。エンタープライズの基本要求にしてもいい。現在のno SQLを設計している人はドメインモデルの実要求についてもう少し意識したほうがいい。汎用性がかえって有効性を損なう@frsyuki 時間的局所性は、オンラインなサービスでは一般に効くだろう。

2010-04-21 16:15:56
Masayoshi Hagiwara @masayh

ビジネスプロセスの意思決定は活動の時間推移の追跡であって、実時間の観測と履歴分析結果に基づくことが中心。前者が時間的局所性を持つクエリーで、一貫性の解決は遅延可能。後者がバッチ処理上のマイニング。だから、世の中はその方向に進んでいる。

2010-04-21 16:18:50
Masayoshi Hagiwara @masayh

時間推移の追跡に関してtwitterが基本設計の事例を示している。だから、僕はそこのエンジニアと話をしたいと思った。単純な興味からだけではありません。

2010-04-21 16:20:39