問題タブ [non-relational-database]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2493 参照

django - GAE データストアを使用した複雑なクエリ

私はスポーツ統計 Web サイト (究極のフリスビー) を開発する初期段階にいます。Google App Engine が私に適しているかどうか、意見をお聞かせください。

私は Django を使用して Python で作成しており、何年も標準の RDBMS に慣れてきましたが、このサイトは長期的なプロジェクトであり、非常に大量のデータが予想されるため、GAE データストアが提供する「無限」のスケーリングが必要です。データベースへのクエリの大部分は非常に標準的な結果を返すため、データストアが論理的な選択のように見えます。ただし、将来的には非常に複雑なクエリを作成して、新しい統計メトリックを作成したり、単に興味深い結果を作成したりしたいと考えています. 将来的にはこれをたくさん行う予定ですが、データがすでに収集されるまで、これらのクエリが何であるかはわかりません。

たとえば、野球の統計アナリストが次のようなばかげた統計を発表するのをよく目にします。日々"。将来的には、どんなクエリでも柔軟に作成できるようにしたいと思います。:)

ただし、bigtable のような非リレーショナル データベースでは、事前に冗長データを含むモデルを考え出す必要があり、すべての作業はフェッチではなく挿入で行われるという印象を受けます。照会する必要があるほぼすべてのデータを含む django モデルを既に構築しましたが、1 年か 2 年後にどんな非正規化モデルが必要になるかわかりません。したがって、将来的に複雑なクエリを作成することは、GAE データストアでは非常に難しくなり、Python で処理する前にサーバーから大量の情報を引き出す必要があると思います。

グーグルアプリエンジンのデータストアは、私がやりたいことに対して単に間違っていますか? または、何かが足りないだけです。よろしくお願いします!

更新: これまでの応答に感謝します。これらの複雑なクエリの多くは、ユーザーに実行してもらいたいクエリであるため、オフライン データベースは実際にはオプションではないことにも言及する必要があることを認識しています。たとえば、ユーザーは、特定のゲームまたはシーズン中に、特定の 2 人のプレーヤーが同時にフィールドにいるときのプレーのさまざまな統計を確認できる必要があります。これらのクエリは、標準の集計統計ほど頻繁ではありませんが、定期的に発生します。

リレーショナル データベースと GAE データストアがあると便利ですが、django はデフォルトで複数のデータベースをまだサポートしておらず、ソリューションをまとめてパッチを適用するのは困難で面倒に思えます。Eric Florenzano は、両方とも django モデルを使用する 2 つのデータベースに対する優れたソリューションを提供していますが、GAE データストアを使用する場合は、代わりにアプリ エンジンの db モデルを使用する必要があります。そして、彼がこの複雑な問題に対して行ったような優れた解決策を考え出すことは、現時点で私のスキルレベルを少し超えています.

現在、私のお気に入りの 2 つのオプションは、GAE タスク キューを使用して難しいクエリを実行するか、webfaction などのより標準的な Web ホストにアクセスし、後でデータが大きくなり、パフォーマンスを向上させる必要がある場合にテーブルを非正規化することです。

0 投票する
3 に答える
2864 参照

couchdb - couchDBで多対多の関係を表す

ログ分析アプリケーションを作成しているとしましょう。メインドメインオブジェクトはLogEntryになります。加えて。アプリケーションのユーザーは、関心のあるログエントリを説明するLogTopicを定義します。アプリケーションはログエントリを受信すると、それらをcouchDBに追加し、システム内のすべてのLogTopicsと照合して、トピックの基準に一致するかどうかを確認します。 。その場合、システムはエントリがトピックに一致することを記録する必要があります。したがって、LogEntriesとLogTopicsの間には多対多の関係があります。

これをRDBMSに保存する場合は、次のようにします。

CouchDBを使用して、私は最初に2つのドキュメントタイプだけを試してみました。LogEntryタイプがあり、次のようになります。

LogTopicタイプがあり、次のようになります。

matching_entries各LogTopicドキュメントのフィールドを使用してLogEntryドキュメントIDのリストを格納することにより、関係を表していることがわかります。これはある程度までは正常に機能しますが、複数のクライアントが両方とも一致するエントリをトピックに追加しようとすると問題が発生します。どちらも楽観的な更新を試み、一方は失敗します。私が現在使用している解決策は、基本的にRDBMSアプローチを再現し、次のような3番目のドキュメントタイプを追加することです。

これは機能し、同時更新の問題を乗り越えますが、2つの予約があります。

  1. リレーショナルDBで行うので、このアプローチを使用しているだけだと心配しています。もっとcouchDBのような(リラックスできる?)ソリューションがあるのだろうか。
  2. ビューは、1回の呼び出しで特定のトピックのすべてのエントリを取得できなくなりました。以前のソリューションではそれが可能でした(include_docsパラメーターを使用した場合)。

誰かが私のためのより良い解決策を持っていますか?使用しているビューも投稿すると役に立ちますか?

0 投票する
1 に答える
3563 参照

database-design - 「NOSQL」データベースは、コンシューマーアプリ(ソーシャルブックマークなど)用にどのように設計されますか?

私は非リレーショナルデータベース、NOSQLムーブメント全体に関する多くの投稿を読んでおり、その周りにはたくさんの新鮮な新しいアクティビティがあります。非常にスケーラブルなWebアプリケーションを構築するための非常に興味深いアプローチのように思えますが、残念ながら(ただし、この初期段階では良いことでもあります)、現時点では明確なリーダー/標準はありません。

私のバックグラウンドはLAMPスタック(MySQLをdBとして)にあり、どのような違いと制限があるかを理解したかったのですが、実際のWebアプリケーションの例を使用しました。RDBMSと非RDBMSの長所/短所の理論に関する優れた記事はたくさんありますが、既存のWebアプリ(ソーシャルブックマークなど)の構築方法の例を説明するものは見つかりませんでした。新しいdB構造の利点と、もしあれば除外しなければならない機能-NOSQL dBは、キー値、ドキュメント中心、またはグラフである可能性があります。

誰かがNOSQLと実際のWebアプリのRDBMSモデル/アーキテクチャ(ソーシャルブックマークや概念をうまく説明する可能性のある他の例など)の高レベルの比較を試してみませんか?

他の人への参照のために、ここに私が出くわした記事のいくつかがあります:

0 投票する
1 に答える
829 参照

ruby-on-rails - Ruby on Rails を使用した非リレーショナル データベースの推奨事項は?

非リレーショナル データベースで遊んでみたいと思っていますが、Rails で一般的に使用されているものが必要です。私は記事の内容を検討しており、Voldemort または CouchDB に傾倒しています。

http://www.ithighlight.com/2009/07/list-of-companys-powered-by-non-relational-database/

推奨事項はありますか?

0 投票する
3 に答える
159 参照

.net - .NET APIを備えた優れた非リレーショナル/準リレーショナルDB?

.NET APIを使用した非リレーショナル/部分リレーショナルDBに関する推奨事項はありますか?

0 投票する
5 に答える
1279 参照

ruby-on-rails - CouchDBとMySQLに調査を保存する

Railsを使用して調査をデータベースに保存するための最良の方法を検討しています。次の表を使用して、調査をリレーショナルデータベースに格納するRails用のこの優れたSmerfSurveyPluginを確認しました。

p>

Smerfに付属する基本的な調査例のログを見ると、いくつかのデータベース呼び出しがあります。

p>

私の質問は、調査は他の何よりも多くのドキュメントであるため、リレーショナルデータベースの代わりにCouchDB(ドキュメント指向データベース)を使用して調査を保存する方が良いでしょうか?それらの線に沿ってこれらの質問があります:

  • 上記の出力は大丈夫ですか、もっと最適化する必要がありますか?つまり、人々は常に調査に記入することはないので、彼らが電光石火の速さである必要はないので、CouchDBが実際にもっと速くなるのではないかと思います
  • すでにこのプラグインでうまく構築されているので、それを使用する必要がありますか、それともCouchDBにこれを含めることは本当のメリットになります。この調査データについて多くの分析を行いたいと思います(たくさんの検索、並べ替え、参加...)。

助けてくれてありがとう。

まだCouchDBをいつどこで使用するか頭を悩ませようとしています:)

0 投票する
2 に答える
222 参照

sql - リレーショナル DB (SQL Server) をルールベース/宣言型の実装に置き換えますか?

私は、(主に) SQL Server (2000)、ColdFusion (8)、および一部の Access/.NET アプリケーションに基づく金融サービス業界のプロジェクトに取り組み始めました。このプロジェクトは、いくつかの単純な Access フォーム/VBA として開始され、ゆっくりと Web インターフェイスに変換されました。

データベースの設計とアプリケーションのコーディングは、仕事で学んでいて、最初から優れた設計原則について学ぶ機会がなかった人々によって行われたと言えます。ビジネス ルールの多くは、無数のカスケード関数とストアド プロシージャ、および Web サーバー テンプレートで設定されます。コメント化されていない定数を使用する複雑な 500 行の SQL UDF の奥深くには、膨大な量の特殊なケース処理があります。クエリに関係する可能性のある 10 ~ 20 個の UDF 間の相互作用をすべて追跡することは非常に困難です。一部のクエリは、実行に時間がかかりすぎるようです (最大 15 分)。

テーブルは十分にインデックス化されていますが、FK リレーションシップがなく、参照整合性がほとんどありません。DB は、少量の毎日のバッチ (複数のテーブルに 1,000 レコード) で頻繁に更新されません。主に、データ リポジトリとして機能するために使用されます (データ ウェアハウスだと思います)。デッドロックや遅延が発生することはほとんどありません。

それで、私の質問は次のとおりです。データベースとフロントエンドを含むプロジェクト全体を再実装したい場合、非リレーショナル実装を検討するのは理にかなっていますか? プライマリ DB は約 1GB (.mdf) しかないため、メモリに簡単に収まります。SQL クエリ構造から、効率的にコンパイルおよび実行できる宣言型モデルに移行したいと考えています。必要に応じて、SQL DB を単なるデータ ストアとして使用できます。

0 投票する
2 に答える
451 参照

ruby-on-rails - Railsを使用してリレーショナルデータベースから非リレーショナルデータベースに切り替えるのは簡単ですか?

良い一日、

私は過去にRails/MySQLを使用してきましたが、Cassandra、MongoDB、CouchDB、およびその他のドキュメントストアDB/非リレーショナルデータベースについて聞いています。それらはスケーラビリティのより良い代替手段になる可能性があるため、後で調査する予定です。

すぐに申請を開始する予定です。リレーショナルデータベースから非リレーショナルデータベースに移行した場合、Railsの設計は異なりますか?Railsの移行はデータベースに依存しないことは知っていますが、非リレーショナルに移行することで設計に違いが生じるかどうかはわかりませんでした。

0 投票する
2 に答える
753 参照

ruby-on-rails - SimpleDB から ActiveResource へ。レール

ActiveResource を SimpleDB にマップする方法を探しています

私が使用したものはすべて古い/バグがある/管理されていないため、プラグイン/宝石を避けたい

難しいことではありませんが、アクティブ リソースとして simpleDB を使用して Rails アプリを正常に実装した人はいますか? どうやってそれをしましたか?ありがとう。

0 投票する
3 に答える
1145 参照

nosql - SimpleDB as the main database, examples

Please, can you give examples of real-life implementations using SimpleDB as the main persistent storage?