データ構造 - mysql データベース トラバーサルに関する PHP の問題
エージェント分散システムに関するアルゴリズム最適化問題
たとえば、エージェントのレベルはゴールド、シルバー、ブロンズの 3 つのレベルに分かれています。私は現在ゴールド エージェント A ですが、同時にシルバー エージェント B、C、D を開発しました。シルバー エージェント b はブロンズ エージェント E を開発しました。と F、図に示すように:
A 従属エージェントのリスト
╦═══════
║
╠═ b
║ ╠══ e
║ ╠══ f
╠═
╠ ═d
今、プログラムを使用します。上記のような例を作成します。図の方法は次のとおりです: (PHP+MYSQL)
まず、上位エージェントが A であるすべてのエージェントを検索します。
たとえば、エージェント B が見つかった場合は、すべてのエージェントを検索しますその上位エージェントは B です。この検索は完了しました。
エージェント C を再度検索…………
など。
質問:
これで、エージェント データベースには 300,000 のレコードが存在します。各エージェントは、エージェント分散システムで自分の従属エージェント ツリーを表示できます。
エージェントに 1,000 の従属エージェントがある場合、すべての検索に時間がかかります。全く表示されなくなります。
私が思いついた解決策は、配列を使用してすべてのユーザー関係を保存し、ユーザーが追加または削除されるたびに、この配列をファイルとして保存することで、同時に配列が更新され、必要なデータが更新されます。は配列から走査され、データベースに直接アクセスして選択を実行するだけです。 。この方法は実現可能でしょうか?他の解決策はありますか?
トラバース
上位レベルのメンバーから下位メンバーを見つけたい場合は、トラバーサルを使用します。このアルゴリズムは、視覚的にデータベースに何度もクエリを実行します。 。 。リソースを大量に消費します。代替手段はありますか?キャッシュ?レディス?
返信内容:
エージェント分散システムに関するアルゴリズム最適化問題
たとえば、エージェントのレベルはゴールド、シルバー、ブロンズの 3 つのレベルに分かれています。私は現在ゴールド エージェント A ですが、同時にシルバー エージェント B、C、D を開発しました。シルバー エージェント b はブロンズ エージェント E を開発しました。と F、図に示すように:
A 従属エージェントのリスト╦═══════
║
╠═ b
║ ╠══ e
║ ╠══ f
╠═
╠ ═d
今、プログラムを使用します。上記のような例を作成します。図の方法は次のとおりです: (PHP+MYSQL)
まず、上位エージェントが A であるすべてのエージェントを検索します。
たとえば、エージェント B が見つかった場合は、すべてのエージェントを検索しますその上位エージェントは B です。この検索は完了しました。
エージェント C を再度検索…………
など。
質問:
これで、エージェント データベースには 300,000 のレコードが存在します。各エージェントは、エージェント分散システムで自分の従属エージェント ツリーを表示できます。
エージェントに 1,000 の従属エージェントがある場合、すべての検索に時間がかかります。全く表示されなくなります。
私が思いついた解決策は、配列を使用してすべてのユーザー関係を保存し、ユーザーが追加または削除されるたびに、この配列をファイルとして保存することで、同時に配列が更新され、必要なデータが更新されます。は配列から走査され、データベースに直接アクセスして選択を実行するだけです。 。この方法は実現可能でしょうか?他の解決策はありますか?
トラバース
上位レベルのメンバーから下位メンバーを見つけたい場合は、トラバーサルを使用します。このアルゴリズムは、視覚的にデータベースに何度もクエリを実行します。 。 。リソースを大量に消費します。代替手段はありますか?キャッシュ?レディス?
階層的なクエリ、オンデマンドでデータのクエリを行うことをお勧めします。一度に関係ツリーを表示するには、多くのクエリが必要になり、リソースが消費されます。
そのような実装では、無限のレベルの分類を確認し、左右の値の原則を使用して、ショッピングモールの分類の原則と同じ順序のツリー構造です。
まず、プロキシレベルがインデックス化されているかどうかを確認します。
ツリー全体を 1 ページに表示するのは適切ではありません。オンデマンドでクエリできます。
ご招待ありがとうございます。私のアイデアをいくつか共有させてください:
(データ量は 300,000 で、レベル 1 ~ 2 までしかキャッシュできないと推定されます) を使用すると、毎回 SQL クエリを使用する必要はありません。
- 複数回ロードされる 前述のように、最初に
をロードします。
缓存
-
ツリー構造の無限分類
N级
的,等点击后,再ajax去请求N+1级
具体的な答えは自分で探してください。詳しく説明するのは非常に面倒です。一般的な原則を説明します。
部下が誰であるかをできるだけ早く知るにはどうすればよいですか?全員が列に並んだ場合は、次の 2 つの条件を満たすだけです: 1- 誰が最初であるかを知っている、2- 自分が最後であることを確認する (もちろん、誰が最後であるかを知っていて、自分が最初であることを確認することもできます)
これによると、 select * from Tree whereindexNumber >= search.node.min &&indexNumberのように、各ノードに適切なシリアル番号を割り当てることで高速な検索が実現できることが推測できます。 最終的なテーブル構造は
id、parent_id (親ノード)、top_id (ルートノード、複数のツリーがある場合)、indexNumber (ツリー内のインデックス番号、top_id+indexNumber は一意です)、min (私は Benchmark、この枝の下で最初の人は誰ですか)、レベル (木の高さ)あなたの例では、これは似ているはずです(括弧内の最初の数字はインデックス番号、2番目は最小値、3番目は木の高さです)
リーリーこの構造は、ノードを操作する場合にはさらに複雑になります (たとえば、f の後に g を追加するか、f を削除すると、abcd はシーケンス番号を再計算する必要があります) が、一般に検索は 1 回で非常に高速に結果を取得できます。検索。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。
