次のようなソーシャル アプリでユーザーの関係を追跡する必要があります。
UserA follow UserC, UserD, and UserE
UserZ follow UserC, UserD, and UserE
UserC follow UserA, UserD, and UserE
等々。
まず、MySQL とその兄弟がゲームに参加できないように、パーティション トレラント データベースが必要です。
私はcouchdbを見ましたが、変更ごとにリビジョンが作成されるため、ドキュメントが次のような場合:
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1, uuid2, uuid3 ]
}
データベースにこの他のリビジョンがあります
(rev 1)
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1, uuid2 ]
}
(rev 2)
{
uuid: uuid
name: name,
lastName: lastName
follows: [ uuid1 ]
}
これは多くのスペースです。手作業でこれを解放できることはわかっていますが、問題は解決しません。
私は Cassandra を調べましたが、これは良い解決策のように思えます。couchdb のような余分なスペースの問題なしに挿入できます。次のように、キー スペース、列、ストア リレーションを作成できます。
keyspace:{
column:{
...
uuidT:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
uuidF:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
uuidH:{ uuidA: timestamp, uuidB: timestamp, uuidZ }
...
}
}
しかし、これにはグラフィカルデータベースが最適かどうか疑問に思っています。
編集:
答えを探した後、DBの選択に役立つこのページを見つけました。http://nosql.findthebest.com/