2012-01-20 7 views
2

私はアプリケーションを構築しています。私のDBフィールドのいくつかについては、現在、これらの値を使用するオブジェクトモデルを定義するクラスに対してintと同じものを使用しています。長期的なスケーラビリティのためのint型またはlong型の変数

後で(つまり、1〜2年が私の希望よりも少ないかもしれませんが)、おそらく20億件を超えるでしょう。データ型を変更するのは比較的大変なことでしょうか、それともかなり簡単ですが、すべてのDBフィールドとクラスをintからlongに変更するのに20-30分かかりますか?

ご意見ありがとうございます。

+2

これを開発の早い段階で検討している場合でも、今すぐやり直してより興味深いものに移行してください。 – Yuck

+3

2Gを超えると予想される場合は、今すぐ実行してください。後で変更する予定の変更を待っている時間は長くなります。 –

答えて

2

それは多くの再ページングを引き起こすので、非常に遅い操作である可能性があります。今、それはすばやい変化でしょう。しかし、明らかに64ビットのフィールドに直ちに移行すると、ディスクスペースの使用量はその間にさらに急速に増加します。あなたの計画でこれを負担することができれば、今やる価値があります。

+0

私はAzureで展開するつもりです。 – frenchie

0

これはIdフィールドに対するものである場合、あなたは理論的にはより多くあるべきでGUIDを使用することを検討すべきである十分な

あなたがテーブルの多くの行は、32ビットから64ビットintにアップグレードすることをお持ちの場合
+3

なぜGUIDですか?その範囲は**巨大なのでちょうど**? 'int'は' 0'で始めると '2147483647'の値を含みます。 'bigint'は' 9223372036854775807'まであり、再びその範囲の半分を無視します。そのデータタイプは、現在の米国の赤字を快適に保持するのに十分であり、誰もが理解できる最大の数字です。 – Yuck

+2

@あなたは、その赤字を理解できる人がいるのでしょうか? –

+0

@ Yuck:「なぜグローバルに一意の識別子(guid)を使用するのですか? *私は識別子がグローバルにユニークであると考えているから*です。ジョブには適切なツールを使用します。グローバルに一意の識別子が必要な場合は、そのタスク用に明示的に設計された型を使用します。 –

1

int64とint32を意味する場合は、必要と思われる場合はリソースを取得してください。

Int64からint32に暗黙的にキャストすることはできません。コンパイルするとそれらが選択されるため、既に行っている明示的なキャストを探す必要があります。

関連する問題