問題タブ [nosql]
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.
sql - nosqlとはどういう意味ですか?誰かが簡単な言葉でそれを私に説明できますか?
この投稿では、Stack Overflow Architectureで、nosqlと呼ばれるものについて読みました。それが何を意味するのか理解できませんでした。グーグルで検索しようとしましたが、正確に何を取得できないかがわかりません。
nosqlの意味を簡単な言葉で説明できる人はいますか?
mysql - アクティビティ ストリーム用の従来のリレーショナル データベースの代替手段
Facebook や Flickr ( http://www.flickr.com/activity ) などで見られるような、他の非リレーショナル データベースがアクティビティ ストリームに適しているかどうか疑問に思っています。 MySQL を使用していますが、かなり負担が大きく (私は数千万のアクティビティ レコードを持っています)、それらは基本的に一度書き込まれると読み取り専用であり、常に時系列で表示されるため、別の DB がうまく機能する可能性があると考えていました。
活動は次のようなものです。
- 午後6時:ジョンはベーコンがお気に入り
- 17:30: Jane が Snow Crash についてコメントしました
- 17:15: ジェーンはベーコンの写真をアルバムに追加しました
問題は、Twitter やその他のシステムとは異なり、アクティビティに関心のある各ユーザーのリストに単にアクティビティを追加することはできないということです。できれば、Redis が(リスト操作で) 適切に機能するように見えます。
次のことができる必要があります。
- あなたがフォローしているユーザーのセットまたはサブセット("John" と "Jane") のアクティビティを日付の逆順でプルします
- モノ (「ベーコン」など) のアクティビティを日付の逆順でプルする
- アクティビティの種類 (「お気に入り」、「コメント」) で絞り込む
- 少なくとも 3,000 万のアクティビティを保存
- 理想的には、フォローしているユーザーを追加または削除した場合、アクティビティ ストリームに変更が反映されます。
私はMySQLでこれを行ってきました。私の「アクティビティ」テーブルは可能な限りコンパクトで、キーは可能な限り小さく、適切にインデックスが付けられています。機能しますが、この仕事には不適切なツールのように感じます.
従来の RDBMS 以外で、このようなことを行っている人はいますか?
2009 年 11 月の更新: 私自身の質問に答えるのは時期尚早ですが、私の現在の解決策は、MySQL に固執し、新しいアクティビティ ストリーム データへの高速アクセスのために Redis を強化することです。ここでの私の答えの詳細:ソーシャル ネットワークでアクティビティ ストリームを実装する方法...
2014 年 8 月の更新: 数年後、私はまだ MySQL を記録システムとして使用し、Redis を使用して各ユーザーの最新のアクティビティに非常に高速にアクセスしています。pt-online-schema-change のおかげで、大規模な MySQL テーブルでのスキーマ変更の処理は問題ではなくなりました
mongodb - mongodbの一意のID
ブログを作成している場合は、ブログのタイトルを一意の識別子として使用し、URLを解析することができます。ただし、数字を使用したい場合はどうなりますか。Twitterがwww.twitter.com/username/statuses/9834542をどのように持っているか知っていますか?誰かがこれを機能させる良い方法を見つけましたか?「_id」の使用は長すぎるため、問題外です。
sql - HBaseの高度なクエリ
次のHBaseスキーマシナリオ(公式FAQから)を考えると...
StudentとCourseなどの2つのエンティティ間の多対多の関連付けのためにHbaseテーブルをどのように設計しますか?
2つのテーブルを定義します。
学生:学生ID学生データ(名前、住所、...)コース(ここでは列修飾子としてコースIDを使用します)
コース:コースIDコースデータ(名前、シラバス、...)学生(ここでは学生IDを列修飾子として使用します)
このスキーマを使用すると、クエリにすばやくアクセスして、学生のすべてのクラス(学生テーブル、コースファミリー)、またはクラスのすべての学生(コーステーブル、学生ファミリー)を表示できます。
「少なくとも2つの共通のコースを共有するすべての学生を教えてください」という要求をどのように満たしますか?そのセットを返す「クエリ」をHBaseで構築できますか、それともすべての関連データを取得してコードで自分で処理する必要がありますか?
database-design - Cassandra データ モデルを設計する際のベスト プラクティスは何ですか?
そして、避けるべき落とし穴は何ですか?取引の中断はありますか? たとえば、Cassandra データのエクスポート/インポートが非常に難しいと聞いたことがありますが、それによって本番データと開発環境の同期が妨げられるのではないかと考えています。
ところで、Cassandra に関する優れたチュートリアルを見つけるのは非常に困難です。私が持っている唯一のチュートリアルは、まだ非常に基本的なものです。
ありがとう。
orm - 参加のない生活...理解と一般的な慣行
多くの「BAW」(big ass-websites)は、インデックス付きの巨大なテーブルに依存するデータストレージおよび取得技術を使用しており、クエリでJOINを使用しない/使用できないクエリ(BigTable、HQLなど)を使用しています。スケーラビリティとシャーディングデータベースを処理します。非常に関連性の高いデータがたくさんある場合、それはどのように機能しますか?
この結合の多くはアプリケーション側で行わなければならないと推測することしかできませんが、それは高価になり始めませんか?コンパイルする情報を取得するために、いくつかの異なるテーブルに対していくつかのクエリを実行する必要がある場合はどうなりますか?そもそも結合を使用するよりも、データベースに何度もアクセスする方がコストがかかり始めていませんか?どれだけのデータがあるかによると思いますか?
また、一般的に利用可能なORMの場合、結合を使用できないことにどのように対処する傾向がありますか?今日頻繁に使用されているORMでこれをサポートしていますか?または、このレベルのデータにアプローチする必要があるほとんどのプロジェクトは、とにかく独自にロールする傾向がありますか?
したがって、これは私が行っている現在のプロジェクトには当てはまりませんが、「ベストプラクティス」とは何かについてしか推測できないようになったため、数か月前から頭に浮かびました。必要な規模に達したことがないため、どのプロジェクトでもこれに対処する必要はありませんでした。うまくいけば、この質問は他の人にも役立つでしょう。
誰かが以下に言ったように、ORMは参加なしでは「機能しません」。このレベルのデータを扱う開発者がすでに利用できる他のデータアクセスレイヤーはありますか?
編集: いくつかの明確化のために、VinkoVrsalovicは言った:
「スニッカーは、トランザクションデータが非正規化されてHadoop、BigTable、またはCassandraスキームで使用されるNO-SQLについて話したいと思っています。」
これは確かに私が話していることです。
xkcdリファレンスをキャッチした人のためのボーナスポイント。
.net - .Netプロジェクトで使用するドキュメントデータベース/Key-Valueストア
.Netプロジェクトでうまく機能するドキュメントデータベースやキーバリューストア(Project Voldemort、MongoDBなど)はありますか?私がこれまで見てきたオプションのほとんどは、Microsoft / Java /オープンソース以外のテクノロジを対象としているようで、Microsoftスタック用のそのようなソリューションの経験/推奨事項があるかどうか疑問に思いました。
nosql - Project Voldermortまたは同様のKeyValueストアが役立つシナリオを誰かが説明できますか?
Project Voldermortを使用して、従来のRDBMSクエリの結果をキャッシュしていることがわかります。ただし、この場合、EHcache Jcacheなどの他の(Java)キャッシングシステムに比べて大きな利点はほとんどありません。
Project Voldermortまたは同様のKeyValueストアを他にどこで使用できますか?これをビジネスアプリケーションでどのように使用していますか?
.net - .NET 用のドキュメント ベースのデータベース
asp.net mvc で記述された Web アプリケーションである種の nosql データベースを使用したいのですが、有用なものが見つかりません。MongoDB と CouchDB を調べましたが、クエリ用に、それらよりも優れた API (マジック ストリングではなく厳密に型指定されたもの) が必要です。このようなものは .NET に存在しますか?