0

私はいくつかのカスタム ブログ ソフトウェアを設計していますが、データベース設計に関して難問にぶつかりました。ソフトウェアには複数のコンテンツ タイプが必要であり、それぞれに異なるエントリー フォームとプレゼンテーション テンプレートが必要です。

私の最初の本能は、これらのコンテンツ タイプをオブジェクトとして作成し、それらをシリアライズして JSON または YAML としてデータベースに格納し、エントリ フォームとテンプレートを単純な文字列として「contentTypes」テーブルに添付することです。ただし、これは面倒に思えます。この設計に対処するための確立されたベスト プラクティスはありますか? これは、オブジェクト データベースを検討すべきユース ケースですか?

オブジェクト データベースを使用する必要がある場合、どれを検討する必要がありますか? 私は現在 Python で作業しており、有能な Python ライブラリを好みますが、必要に応じて Java に移行することもできます。

4

2 に答える 2

2

テンプレート (ユーザーによって変更される可能性がある) をデータベースに保存しないでください。大量のデータベース ダンプに対処する必要がある場合、ステージング環境から運用環境に移行するための適切な方法はありません。まさにこの理由で、いくつかのソフトウェアを正しいものにダンプしています。

それとは別に、ソース(ユーザーが編集可能な部分)をデータベースに保存し、さらに「プリコンパイル済みバージョン」をデータベースに直接保存する(取得を高速化するため)か、キャッシュシステムに保存します。

個人的には、集合論アプローチを採用します。

  • コンテンツ タイプの各セットをプリコンパイルして保存し、編集時に再コンパイルして高速配信用に別の場所 (テーブル、コレクション、ディレクトリなど) に保存します。
  • ソースを共通の場所に保存して、さまざまなコンテンツ タイプを簡単に再構築できるようにします (ソース形式は、実際には特殊なケースのコンテンツ タイプです)。
  • システム (開発、ステージング、本番) 間の移行が移行を容易にする場所にテンプレートを保持する
于 2010-12-23T10:40:07.573 に答える
0

私は Oracle の強力な推進者ですが、NoSQL を真剣に検討する必要があると思います。Cassandra やその他の NoSQL データベースは、すでにあなたの難問を検討しており、それを根底から打ち砕いています。CouchDB も別の会社です。彼らのサンプル コードは、ブログを保存する方法だと思います。

于 2010-12-21T23:53:16.367 に答える