問題タブ [scalability]
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 - 安価なスケーリング: MySQL と MS SQL
大量のデータ (および結合/検索) がある場合、MySQL は MS SQL と比較してどれくらい安くなりますか? すでに掘り下げられた後の Q&A でいっぱいの stackoverflow のようなサイトを考えてみましょう。
私の ASP.NET サイトは現在 SQL Server Express 上にあるため、長期的にコストを比較する方法がわかりません。とはいえ、簡単な調査の結果、MySQL のユーザーが得られる節約をうらやましく思い始めました。
database - 「シャード」を使用して Web サイトをスケーリングすることについて人々が話すとき、それは何を意味するのでしょうか?
大規模な Web サイトのスケーリングの問題を解決するために、「シャード」手法について何度か言及されているのを聞いたことがあります。この「破片」テクニックとは何ですか?なぜそれが優れているのですか?
asp-classic - IIS 6.0 のクラシック ASP がスケーリングしない
IIS 6.0 はクラシック ASP ページを順番に (一度に 1 つずつ) 提供しています。
#2 のリクエストは、#1 のリクエストが終了したときにのみ Web サーバーによって処理されます。
1 番目の要求にもう少し時間がかかる場合、2 番目の要求は、1 番目の要求が IIS によって処理され始めるまで待機する必要があります。
これは IIS の構成ミスですか?
オペレーティング システムは Windows Server 2003 Standard Edition (Service Pack 2) です。
language-agnostic - フロントエンドなしのCMS?
私たちが開発している多くのプロジェクトでは、サイトのバックエンドに CMS 機能が必要です。一方で、完全なフロント エンド ソリューションを提供したくない、またはコミットすることができません。これをよりよく説明するには:
JoomlaやDotNetNukeなどの CMSは、完全な Web サイト ソリューションであり、データの保存と公開を可能にします。データを保存して独自の方法で取得する必要があるだけの場合、それらはまったく友好的ではありません。それらは私たちが探しているものではありません。CMS と呼ぶべきではないと思います。
UmbracoのようなCMS は良さそうに見えますが、カスタムの方法でデータを使用したい場合は、あまり用途が広くありません。Umbraco は実行時にデータにアクセスするための API を提供しますが、私はスケーラビリティを考慮して静的な公開機能を持つことにも関心があります。
さらにいくつかの兆候を示すには:
- プラグインシステムがある場合、おそらく私が探しているものではありません...
- 静的および動的に公開できない場合 (XML ファイルまたは HTML ファイルと API を考えてください)、おそらく私が探しているものではありません...
- クロス DB は素晴らしいですが、厳密には必要ではありません
CMS は無料である必要はありませんが、完全なソース コードを入手できる必要があります。プラットフォームに関しては、主に .NET と LAMP 向けのソリューションが必要です。
CMS Matrixサイトは既に知っていますが、その CMS の定義には Web サイト ソリューションが多すぎるため、必要なものを見つけるのに十分な信号対雑音比が得られません。
編集:明確にするために:ある種のフレームワークを使用してCMSを書きたくありません。一般的な CMS 機能 (wysiwyg エディター、バージョン管理、ワークフローなど) を使用して異種データを格納でき、このデータを公開する機能を提供するソリューションが必要です。
php - PHP のパフォーマンスに関する考慮事項
私はPHP
サイトを構築していますが、今のところPHP
私が使用しているのは、特定のページに含まれる半ダースほどです。(最終的には、いくつかのデータベース クエリを使用する予定です。)
static とは対照的に、単純なinclude()
ステートメントは速度またはスケーリングの懸念事項HTML
ですか? サイトが動かなくなる原因はどのようなものですか?
java - Terracotta を使用して、RAM を集中的に使用するアプリケーションをスケーリングできますか?
現在 RAM に制限されているアプリケーションをスケールアップするために、Terracotta を評価しています。これは共同フィルターであり、ユーザーごとに約 2 キロバイトのデータを保存します。Amazon の EC2 を使用したいのですが、これは RAM が 14GB に制限されていることを意味します。これにより、約 700 万ユーザーというサーバーあたりの効果的な上限が得られます。これを超えてスケーリングできる必要があります。
これまでの私の読書に基づいて、Terracotta は各サーバーで使用可能な RAM よりも大きなクラスター化されたヒープを持つことができると考えています。各サーバーが 14GB しかサポートしていない場合に、30GB 以上の効果的なクラスター化ヒープを持つことは実行可能でしょうか?
ユーザーごとのデータ (大部分は float の配列) は非常に頻繁に変更され、1 分間に数十万回も変更される可能性があります。これらの変更のすべてが、発生した瞬間にクラスター内の他のノードに同期される必要はありません。一部のオブジェクト フィールドのみを定期的に同期することはできますか?
sql-server - MS SQL Server で多数のテーブルを管理する最善の方法は何ですか?
この質問は別の質問に関連しています:
複数のファイル グループを使用すると、データベースの速度が向上しますか?
私たちが開発しているソフトウェアは、MS SQL Server 2005 を使用してリレーショナル データを格納する分析ツールです。最初の分析は遅くなる可能性がありますが (数百万行または数十億行のデータを処理しているため)、以前の分析をすばやく呼び出すにはパフォーマンス要件があるため、各分析の結果を「保存」します。
私たちの現在のアプローチは、分析結果を一連の「実行固有の」テーブルに保存することです。分析は非常に複雑であるため、分析ごとに 100 ものテーブルが作成される可能性があります。通常、これらのテーブルは分析ごとに数百 MB を使用します (数百 GB、場合によっては数 TB のソース データと比較すると小さい)。しかし、全体として、ディスク容量は私たちにとって問題ではありません。テーブルの各セットは 1 つの分析に固有であり、多くの場合、これによりソース データを参照するよりもパフォーマンスが大幅に向上します。
保存された分析結果が十分に蓄積されると、このアプローチは崩壊し始めます。より堅牢なアーカイブ/クリーンアップ機能を追加する前に、テスト データベースは数百万のテーブルに増加しました。しかし、本番環境であっても、100,000 を超えるテーブルを持つことは簡単なことではありません。Microsoft は sysobjects のサイズに非常に大きな理論的制限 (~20 億) を設定していますが、データベースが 100,000 程度を超えると、CREATE TABLE や DROP TABLE などの単純なクエリは劇的に遅くなる可能性があります。
私たちのアプローチについて議論する余地はありますが、より多くのコンテキストがないとそれを行うのは難しいと思うので、代わりに、より一般的な質問をしたいと思います: 非常に多くのテーブルを作成する必要がある場合、管理するための最良のアプローチは何ですか?彼ら?複数のファイル グループ? 複数のスキーマ/所有者? 複数のデータベース?
別のメモ: 「問題にハードウェアを投入する」(つまり、RAM、CPU パワー、ディスク速度を追加する) という考えには、私は興奮しません。ただし、特に (たとえば) 誰かが、RAM の追加や複数のファイル グループの使用が大規模なシステム カタログの管理にどのような影響を与えるかを明確に教えてくれる場合は、その可能性を排除しません。
java - JMSまたはJavaSpacesを介してマルチステージタスクを分散することの長所/短所は何ですか?
多段階の処理パイプラインを必要とする作業を分散しようとする場合、JMSとJavaSpaceの通信、同期、およびスループットのコスト制限は何ですか?
database - 極端なシャーディング: ユーザーごとに 1 つの SQLite データベース
私は、電子メール サービスとソーシャル ネットワークの間のどこかにある Web アプリに取り組んでいます。今後かなり大きくなる可能性を感じているので、スケーラビリティが気になります。
集中化された 1 つの MySQL/InnoDB データベースを使用し、その時が来たらそれを分割する代わりに、アクティブなユーザーごとに個別の SQLite データベースを作成することにしました。つまり、「シャード」ごとに 1 つのアクティブなユーザーです。
そうすれば、データベースのバックアップは、各ユーザーの小さなデータベース ファイルをリモートの場所に 1 日に 1 回コピーするのと同じくらい簡単になります。
スケールアップは、新しいファイルを保存するためにハードディスクを追加するのと同じくらい簡単です。
アプリが単一のサーバーを超えて成長した場合、GlusterFS を使用してファイルシステム レベルでサーバーをリンクし、アプリを変更せずに実行するか、各サーバーが隣接するサーバーの sqlite ファイルを操作できるようにする単純な SQLite プロキシ システムを装備できます。
各 HTTP リクエストは一度に 1 つまたは 2 つのデータベース ファイルにしかアクセスせず、SQLite は読み取り時にのみブロックするため、同時実行の問題は最小限に抑えられます。
このアプローチにより、アプリを適切にスケーリングし、多くのクールでユニークな機能をサポートできると確信しています。私は間違った賭けですか?何か不足していますか?
更新これまでのところ問題なく機能している、それほど極端ではないソリューションを使用することにしました。私は一定数のシャードを使用しています - 正確には256個のsqliteデータベースです。各ユーザーは、単純なハッシュ関数によってランダムなシャードに割り当てられ、バインドされます。
私のアプリのほとんどの機能では、1 回のリクエストで 1 つまたは 2 つのシャードにアクセスする必要がありますが、ユーザーによっては、256 個の異なるシャードのうち 10 ~ 100 個の異なるシャードに対して単純なクエリを実行する必要があるものがあります。テストでは、すべてのデータが RAM にキャッシュされている場合、約 0.02 秒以下かかることが示されています。私はそれで生きていけると思います!
UPDATE 2.0アプリを MySQL/InnoDB に移植し、通常のリクエストではほぼ同じパフォーマンスを得ることができましたが、シャード ウォーキングを必要とするその 1 つのリクエストでは、innodb が 4 ~ 5 倍高速です。この理由とその他の理由で、私はこのアーキテクチャを削除しますが、どこかで誰かがその用途を見つけてくれることを願っています...ありがとう。
orm - 頻繁にアクセスされる可能性のある ASPNET MVC アプリケーションに Subsonic を使用する
頻繁にアクセスされる可能性のある ASPNET MVC アプリケーションのプロジェクトを開始しようとしていますが、DAL に Subsonic を使用することを考えていました。Subsonic が何千もの同時リクエストを処理する能力について、いくつか懸念があります。Subsonic を使用している人気のある Web サイトの例を教えてください。また、NHibernate 以外の Subsonic の代替案について何か提案があれば、それも素晴らしいことです。ありがとう