8

多くのプロジェクト DB テーブルの主キーとして GUID を使用することにしました。特にスケーラビリティ、バックアップ、および復元を念頭に置いて、これは良い習慣だと思います。問題は、通常の GUID を使用して別のアプローチを探したくないということです。私は実際にどの Pinterest を主キーとして使用しているか知りたいと思っていました。URL を見ると、次のように表示されます。

http://pinterest.com/pin/275001120966638272/

文字列として保存されていても、数値表現を好みます。これを達成する方法はありますか?

さらに、YouTubeは別の種類のハッシュ技術も使用していますが、私にはわかりません:

http://www.youtube.com/watch?v=kOXFLI6fd5A

これはスキームのようにURLを短縮することを思い出させます。

私は最短のものを好みますが、それが一意であるとは限らないことを知っています. 私は最初に次のようなことを考えました:

 DateTime dt1970 = new DateTime(1970, 1, 1);
 DateTime current = DateTime.Now;
 TimeSpan span = current - dt1970;

結果の例:

1350433430523.66

1970 年以降の合計ミリ秒を出力しますが、1 秒あたり数十万回の書き込みがあるとどうなるでしょうか。

私は主に非 BIGINT 自動インクリメント ソリューションを好みます。これは、必要に応じてサーバー間などでデータを転送できるため、サード パーティのツールを使用して DB をスケーリングする際の頭痛が軽減され、バックアップ/復元機能の問題が少なくなるためです。

別の洗練されたアプローチは、アプリケーションに合わせてソリューションを調整することです。データベースでは、主キーにはユーザー名 (一意であり、ユーザーが変更することはできません) も含まれるため、名前の数値とミリ秒数を組み合わせて、一意の数値文字列を得ることができます。ユーザーはそれほど頻繁にデータを挿入しないため、数値 ID は一意であることが保証されます。また、最後の 5 桁を削除しても一意の ID を取得できます。これは、ユーザーが 1 秒あたり 1 回を超える頻度でデータを挿入することはほとんどないと想定しているためですが、おそらくそうはしないでしょう (どう思いますか?この考え?)

だから私はあなたの助けを求めます。私のデータは、毎秒数万の新しい行で、年間 2 TB の非常に大きくなると想定しています。URL はできるだけ「わかりやすい」ものにしたいと考えており、「通常の」GUID は使用したくありません。

ASP.NET 4.5 と MySQL を使用してアプリを開発しています

ありがとう。

4

3 に答える 3