1

大きなブロブがファイルシステムに格納される場合、(理論的には)デスクトップアプリがこれらのエクスプレス/組み込みデータベース製品(SQL-Server Express、Oracle Express、SQLite3など)の4GBの制限を完全に消費できる期間はどれくらいか疑問に思います。

また、4GBに達したときの戦略はどうなりますか?

  • 古いDBをアーカイブする
  • 1〜3か月のデータを新しいDBにコピーします(これをキャッシュ戦略と見なしますか?)
  • この時点から新しいDBの使用を開始します(古いデータにどのようにアクセスしますか?)

テーブル/列に保存したデータの量によって、答えが異なる場合があることを理解しています。しかし、あなたの経験に基づいて説明してください(どのようなデスクトップアプリ、書き込み/読み取りが重い、あなたの推測によるとどれくらいの時間がかかるか)。

4

4 に答える 4

2

「4GB になったらどうなるか」に対する私の戦略は、通常、「本格的なデータベースをインストールする」ことです。

4 GB は非常に大量のテキストです。開発者が 1 人のアプリケーションの場合、ほぼ無限にあると考えてください。

ファイルシステムへのブロブを想定して、ユーザーの画像を画像ごとに 100kb、ユーザーごとに 1 つのプロファイル画像に制限し、それらの画像に対してデータベースの 4 分の 1 を超えないようにします。1GB。それはまだ1万人のユーザーです。

特別なことをしない限り、通常 4GB は大量です。

于 2010-05-03T14:38:45.963 に答える
2

「実際の」データベースへのアップグレードを勧める以外に、この質問に答える方法はありません。そうは言っても、単一ユーザーのデータベースが大きなblobs を保持せずに 4GB に達している場合は、異常なことをしています。


編集

多くの人が無視していることの 1 つは、SQL Server の Express エディションの RAM と CPU の制限です。2008年以前にはデータベースサイズの制限が4GBありますが(この質問のコメントで指摘されているように、2008 R2の場合は10GB)、特にデータセットでは、1GBのRAMと単一のCPUの制限によって悪影響を受ける可能性がはるかに高くなりますそれくらい大きい。


アーカイブは (ほとんど) 単純な解決策ではありません。通常、既存の関係を壊したり、データを複製したりする必要があるからです。たとえば、Customers とOrders のデータベースがあるとします。

                Order
Customer        ----------
---------       OrderID
CustomerID <--- CustomerID
...             ...

ここでの自然な選択は、2 つの列の間に外部の hey を作成し、テーブルCustomerIDで null 非許容にすることです。Orderしかし、注文をアーカイブしたい場合はどうなりますか? アーカイブ データベースのリレーションシップを解除する (アーカイブ データベースにCustomerID存在しない にリンクできるようにする) か、データを複製する (リンクされたCustomerレコードをライブ データベースに保持しながらアーカイブする) 必要があります。 )。どちらのオプションも、メンテナンスの観点から特に望ましいものではありません。

于 2010-05-03T14:42:21.477 に答える
1

「限界に達したら次はどうする?」

この番号: 18446744073709551615. 取得できなかった場合は、16 エクサバイト (マイナス 1) です。

于 2010-05-03T20:16:31.517 に答える
1

制限に達した場合は、その制限のない DBMS を使用してください。また、フリーソフトウェアなどというものは存在しないことを常に覚えておいてください。

于 2010-05-04T20:59:09.963 に答える