2012-02-11 10 views
2

私はファイルに関するメタデータを保存する必要があるWebアプリケーションを構築しています。いくつかの共有ファイルを含めて、ファイルごとに約15-20の「特性」があります(user1 & user2にアクセスする必要があります)。私の目的のためにデータベースを選択するには?私はファイルのメタデータを保存したい。

これにリレーショナルデータベースを使用することをおすすめしますか?新しいよりスケーラブルなnoSQLデータベースのほうがいいですか?

これはすばやくスケールするものであり、私たちが読み書きを高速で行えるようにする必要があります。

パフォーマンス面でリレーショナルDBとどのように機能するかわかりません(特定のプロパティを持つuser1が所有し、user2に共有されているすべてのファイルを検索しようとしています。一緒に4テーブル...パフォーマンスのためにおそらく悪いですか?)

あなたのフィードバックに感謝します!

答えて

2

3つまたは4つのテーブルをジョインするとパフォーマンスが低下するとは思われません。オープンソースのリレーショナルソリューションを検討しているなら、私はPostgreSQLを提案します。これは現在のところ最も豊かなSQL実装です。しかし、MySQLもSQLiteでも動作します。彼らはすべてまともなパフォーマンスを持っています。

一方、保存する必要があるメタデータが今後拡張される場合、スキーマベースのデータベースは面倒です。その場合、私はオープンソースのMongoDBのように、スキーマレス(別名ドキュメントベース、NoSQLなど)データベースを提案します。索引では、優れた照会パフォーマンスも得られます。 CouchDBはより豊かな実装ですが、スピードに注意を払っていません。

+0

ありがとうございます!私たちが保存している特徴の数を列方向に拡大することを意味しますか、またはエントリ数の点で拡大することを意味しますか? - 後者は確かに真実です - 前者はありません... - 私が気に入っていないのは、nosqlタイプのDBに参加することは比較的不可能だということです...私の理解が行く限り... – user1198133

+0

私は前者のデータを展開しています列方向。リレーショナルな方法をとってみると、REALのリレーショナルな方法はNoSQLと同じ利点があります。私はテーブル(ファイル名、someattrib、someotherattrib)の代わりに、複数のテーブル(fileid、ファイル名)、(fileid、someattrib)、(fileid、someotherattrib)を提案する。これはより柔軟です(ファイルは各タイプの複数の属性を持つことができ、後で拡張しやすくなります( 'ALTER TABLE ADD COLUMN'の代わりに' CREATE TABLE') –

0

属性をファイルに割り当てることができるsvnやhgなどのvcsを使用しないのはなぜですか? これはすべて、情報で何をしたいかによって異なります。

1

私はリレーショナルデータベースがこれに適していると思います。 NoSQLデータベースは、通常、簡単で柔軟な照会を可能にしません。それは古いSQLデータベースの強みです。

1

ドキュメントとその情報を格納することは、SQLデータベースの強みではありません。
私は、MySQLのライセンス(またはデータプロバイダのもの)のせいでMySQLを選択しません。将来的にOracleがどのようなことをするのかは言えません。

文書を保存するために最適化された、非常に高速でセットアップが容易な(使用する)NoSQLデータベースを探しています。
JavaではなくC++で書かれたもので、.NETとJavaのバインディングはnon-the-lessになっていると思います。

私はMongoDBが理想的な選択肢だと言います。

+0

ファイル自体を保存したくありません - 周囲のメタデータそれら。 – user1198133

関連する問題