イブニング用のデータベースすべてをランダム化する、私は最近、Pinterestのでシャーディングに関する次のブログ記事を読んでいると私はいくつかの素晴らしいものがあると思うhttps://engineering.pinterest.com/blog/sharding-pinterest-how-we-scaled-our-mysql-fleet挿入
私も上のわからないよ何を、どのように最善にありますブランドの新しいユーザーを挿入する場所を決めます。
上記の記事を読んでいないか、気にしていない人にとっては、Pinterestにはいくつかの断片があり、それぞれに多数のデータベースがあります。これらは、シャード、テーブルを決定するオブジェクトのタイプ(ユーザー、ピンなど)、問題のオブジェクトのローカル自動増分IDを決定する64ビットシフトに基づいて、オブジェクトのIDを生成します。今では、彼らは彼らがいる 'ボード'と同じデータベースにピンなどを入れようとします。しかし、新しいオブジェクトの場合、それが存続する「シャード」を決定する最良の方法は何でしょうか?彼らはモジュラス例えば
shard = md5(“1.2.3.4") % 4096 //4096 is the number of shards
を使用しかし、私は、単純な電子メール/パスワードの登録フォームを持っていた場合、あなたは電子メールアドレスに同様のアプローチを使用すると、ワークアウトのために働くだろうと思いますFacebook経由のサインインするユーザーのために
最初のシャード?私はこのケースでは電子メールでなければならないと考えていました。そうしないと、どのデータベースからログオンの資格情報を検証するのかわからなくなります。また、私はポストが2015年であり、あまりにも古くなく、コンピューティングパワーが素早く動くことを知っていますが、ここでmd5を使用した方がよいでしょうか?私は、衝突の可能性が軽微であることを知っています - 特にここで電子メールアドレスをハッシュすることについて話しているだけですが、別のアルゴリズムを使用する価値はありますか?私は基本的にシャードを決定し、それを元に戻す方法を考え出す最良の方法に興味を持っています。(なぜ私はそれが電子メールアドレスでなければならないと思うのですか)
(それはそのように見えるようPinterestのタグでこれをしていないPSはちょうどAPI devのためだ、誰かが、それは問題でより良いの目」を得るかもしれないと考えるならば、それを追加して自由に感じる)
@NorbertvanNobelenありがとう、それは私のためにそれをきれいにする、なぜ私は自分自身(その瞬間の一つ)を考えなかったのか分からない。あなたがこれを回答として投稿すれば、それを受け入れるよ – TommyBs
これは知的な質問ですか?または、1台のサーバーを超えて拡張する必要があるシステムを構築していますか? –
2015年 - 世紀の変遷以来、CPUはあまり改善されていません。データベースツールはあまり変更されていません。ここ数年の唯一の大きな変化については、SSDの普及が広がっています。 –