問題タブ [rethinkdb]
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.
python - JSON API に従来の SQL ではなく RethinkDB を選択することはどの程度適していますか?
Web アプリのバックエンドを構築しています。フロントエンドの API として機能し、Python (正確には Flask) で記述されます。
設計と実装に関していくつかの決定を行った後、データベースの部分に取りかかりました。そして、NoSQL データ ストレージが従来の SQL データベースよりも私のプロジェクトに適しているのではないかと考え始めました。以下は、データベースによって処理される必要がある基本的な機能の説明であり、次に、どのタイプのストレージを選択する必要があるかに関して考えられる長所と短所のリストです。最後に、他の NoSQL データ ストレージではなく RethinkDB を検討した理由について説明します。
API の基本機能
Artist
API は、 、Song
、Suggestion
、User
およびの少数のモデルのみで構成されていますUserArtists
。
User
いくつかの関連データを含む を追加し、いくつかの をそれにリンクできるようにしたいと考えArtist
ています。Song
リクエストに応じて s にs を追加し、 anと aを含むa の aArtist
も生成したいと思います。Suggestion
User
Artist
Song
おそらく、最も重要な部分の 1 つは、Artist
s が定期的にUser
s にリンクされることです (また、 s が何らかの基準を満たさない場合はArtist
、システムから (したがって s からも) 削除される可能性があります)。s も s に動的に追加されます。これが意味するのは、s が s の固定セットを持っておらず、s も s の固定セットを持っていないということです。それらは継続的に更新されます。User
Song
Artist
User
Artist
Artist
Song
長所
NoSQL の場合:
Artist
すべての人が FacebookID やSong
SoundcloudIDを持っているわけではないため、柔軟なスキーマ。- JSON API ですが、レコードが JSON として保存されるという事実から恩恵を受けると思います。
- sの数は多いと思います
Song
が、特にSuggestion
s はかなり増えるので、ここでは NoSQL の方がうまく機能します。
SQL の場合:
- 固定されたスキーマは、モデル間の関係に役立つ場合があります。
- Flask は、モデルの定義に非常に役立つ SQLAlchemy をサポートしています。
短所
NoSQL の場合:
- リレーションは実装が難しく、トランザクションのようなモデルの更新には少しコードが必要です。
- Flask には処理を容易にするためのラッパーやモジュールがありません。そのため、データベース操作中にコードを読みやすくするために、ある種のラッパーを実装する必要があります。
- 記録をどのように保存すればよいか、
UserArtist
特に
SQL の場合:
- 操作はかさばります。スキーマを定義し、列にデフォルトがあるかどうかを確認し、デフォルトを割り当て、データを検証し、トランザクションを開始/コミットする必要があります。API のような単純なものには面倒すぎると思います。
DB を再考する理由
次の理由から、API の NoSQL の実装の可能性として RehinkDB を検討しました。
- 他のソリューションよりもシンプルで軽量に見えます。
- 大きな利点であるネイティブ Python サポートがあります。
- テーブルの結合や、モデル間にいくつかの関係がある API で役立つ可能性のあるその他の機能を実装しています。
- それはかなり新しいもので、コミュニティから多くの影響と愛が見られます。また、データベースの相互作用を活用する新しいものを継続的に追加するという意志もあります。
これらすべてを考慮して、NoSQL と SQL のどちらが私のニーズにより適しているかについてのアドバイス、および 2 つのその他の賛否両論、そしてもちろん、私が述べていないことのいくつかの修正について、喜んでお聞きします。ちゃんと。
javascript - ID の配列でテーブルを結合する方法
この例を使用して ID の配列に参加しようとしています: https://github.com/rethinkdb/rethinkdb/issues/1533#issuecomment-26112118
テーブルのスニペットを保存します
場所の表のスニペット
店舗を選択して、その店舗の場所に参加したいと思います。
ReThinkDB 寄稿者からの元の例:
私のJSへの変換の試み
結果
RqlRuntimeError: Expected type ARRAY but found STRING
rethinkdb - RethinkDB: 任意のフィールドに文字列を含むすべてのドキュメントを取得する
任意のフィールドに特定の文字列を含むすべてのドキュメントを返すクエリを実行したいと考えています。たとえば、「users」テーブルがあり、「john」を含むすべてのドキュメントを探しているとします。返される結果は次のようになります。
[{"first_name": "jhon", "last_name": "watson"}, {"first_name": "elton", "last_name": "john"}, {"first_name": "sherlock", "last_name": "holmes", "best_friend": "john watson"}]
rethinkdb でそれを行うにはどうすればよいですか? JavaScriptの回答で十分です。Pythonの実装の方が優れています。
database-performance - RethinkDB: カテゴリごとにランダムなドキュメントを取得する
のテーブルがあります~8000 quiz questions
。それらはに分かれてい25 categories
ます。各カテゴリには、クイズを生成するmax_questions
ために選択する必要がある質問の数を示す属性があります。randomly
例えば
私は解決策を思いつきましたが、私は約かかります。実行するのに 2 秒。
RethinkDB を使用して質問をすばやく取得する方法はありますか? 1 つのクイズで 25 回のリクエストと 25 回の呼び出し.sample()
は、私にはよく聞こえません。
あなたの助けに本当に感謝します!