3

私はブログ エンジンのバックエンドを Java で構築していますが、エンジンを設計するときに最初に抱いた疑問の 1 つは、「段落を Java 文字列に保存するのが最善の方法ですか?」というものでした。ブログ エントリのテキスト本文に含まれる可能性のあるテキストの段落を保存する方法を考えるとき。

現在、私のブログ投稿はテキストのみなので、写真やビデオなどの他のメディアは気にしないでください。

しかし、ブログ エントリの本文を格納するために String を使用することは良い考えでしょうか?

私のエンジンには、ブログの著者、タイトル、本文など、ブログ エントリのさまざまな機能を格納する BlogEntry クラスがあります。著者とタイトルに文字列を使用しているのは、文字列が長すぎないという理由だけです。明らかに、すべてのブログ エントリの本文テキストが 1 ~ 2 文であれば、Java String を使用しても問題はありません。しかし、これらのブログ エントリは、信じられないほど長い文章の複数の段落になる場合があります。巨大なブログ エントリのテキストを処理するには、Java String を使用しないようにする必要がありますか? ブログ エントリのテキストを保存するために File のようなものを使用した方が良いでしょうか?

注意: 私が「より良い」と言うとき、私は保守性、優れた実践、そしておそらく時間の複雑さを見ています。私の「より良い」の定義は、基本的に「これはこれを実装する良い方法ですか?プロのプログラマーはこれを見て、私がこれをどのように実装したかを気に入るでしょうか?このエンジンを使用する他のプログラマーは、この実装を簡単に使用して理解できるでしょうか?」です。

他に何か明確にできることがあれば教えてください。ありがとう!

編集: データベースをまったく使用しないようにしています。毎回プログラムを閉じる前に、ブログのエントリをファイルに保存する予定です。したがって、ブログのテキストを文字列として保存し、BlogEntry 自体を後で使用するためにファイルとして保存します。

4

1 に答える 1

3

Java では、String の最大長は 2.147.483.647 文字です。1 文字あたり 1 バイトの単純なエンコードでも、2GB を超えます。これは、プレーン テキスト ドキュメントをその中に収めるのに十分なはずです。

大きなドキュメント (数 MB 以上) がある場合、文字列の制限に達するずっと前に、最初に解決しなければならない他の問題に遭遇します。たとえば、ユーザビリティの問題、帯域幅の制限、レンダリング パフォーマンスなどです。

また、「文字列とファイル」は、正しいものを比較しているようには聞こえません。「インメモリ vs パーシスタント」と聞いたほうがいいかもしれません。文字列をメモリに保存しても問題ありません-文字列が失われてもかまわない場合。アプリケーションまたはサーバーがクラッシュしたか、メンテナンスのためにシャットダウンする必要があったために停止した場合、Web アプリケーションは通常、永久に実行されます。どちらの場合も、メモリ内のすべての文字列が失われます。できるだけ早くそれらを永続化する必要があります。必要に応じてメモリ内コピーを保持し、パフォーマンスが心配な場合にキャッシュとして使用できます。

または、問題は「データベースとファイル」に関するものかもしれません。しかし、軽量なファイル ベースのデータベースやインメモリ データベースも存在するため、その比較も正確ではありません。とにかく、一般的なアプローチはデータベースを使用することです。あなたが説明したようなシステムは、直接ダウンロードできるドキュメントなど、まれなケースでのみファイルを使用することを期待しています。

于 2015-02-15T15:16:54.800 に答える