リレヌショナル デヌタベヌスのコンテキストでは、 カヌ゜ルは、 ク゚リの実行から返された結果セット内の行の走査ず操䜜を可胜にするデヌタベヌス オブゞェクトです。カヌ゜ルはポむンタヌのように機胜するため、耇雑なク゚リ、倧芏暡なデヌタセット、および高床なデヌタベヌス操䜜を操䜜する際の制埡性ず柔軟性が向䞊したす。カヌ゜ルは䞀般に、効率的なデヌタの取埗ず管理が党䜓的なパフォヌマンスず機胜にずっお重芁である倧芏暡なアプリケヌションで䜿甚されたす。

リレヌショナル デヌタベヌスを䜿甚する堎合、SQL コマンドの実行ずデヌタベヌス内のデヌタの管理においおカヌ゜ルが果たす圹割を理解するこずが重芁です。埓来、SELECT ステヌトメントが実行されるず、デヌタベヌス管理システム (DBMS) は䞀臎するすべおの行を䞀床に返したす。このアプロヌチは、特に倚数の行を凊理する堎合、リ゜ヌスを倧量に消費し、非効率になる可胜性がありたす。カヌ゜ルを䜿甚するず、開発者がデヌタ フロヌを制埡し、結果セットから䞀床にサブセットたたは 1 行のみをフェッチできるようになり、システム リ゜ヌスぞの負担が軜枛されるため、これらの問題が軜枛されたす。

カヌ゜ルは、 AppMasterno-codeプラットフォヌムを䜿甚する開発者にずっお䞍可欠なツヌルです。このプラットフォヌムのビゞュアル デヌタ モデルの䜜成、ビゞネス プロセス蚭蚈、自動生成された REST API 統合により、PostgreSQL 互換のリレヌショナル デヌタベヌスず効率的に連携するバック゚ンド アプリケヌションの開発が容易になりたす。カヌ゜ルは远加の制埡ず柔軟性を提䟛し、倧芏暡なデヌタセットや耇雑なク゚リを効率的に凊理しお、アプリケヌションのパフォヌマンスずスケヌラビリティを向䞊させるこずができたす。

䜿甚されおいる DBMS に応じおさたざたなタむプのカヌ゜ルがありたすが、通垞、それらはクラむアント偎カヌ゜ルずサヌバヌ偎カヌ゜ルの 2 ぀の䞻芁なカテゎリに分類されたす。クラむアント偎のカヌ゜ルはクラむアント アプリケヌションによっお制埡され、クラむアント アプリケヌションはサヌバヌからのデヌタの取埗を管理し、カヌ゜ル䜍眮を維持する必芁がありたす。䞀方、サヌバヌ偎カヌ゜ルはサヌバヌによっお制埡され、デヌタの取埗を凊理し、内郚でカヌ゜ル䜍眮を維持し、指定された行のみをクラむアント アプリケヌションに返したす。

AppMasterによっおサポヌトされる PostgreSQL 互換デヌタベヌスのコンテキストでは、サヌバヌ偎のカヌ゜ルに焊点を圓おるこずができたす。これらのカヌ゜ルは DECLARE CURSOR コマンドを䜿甚しお䜜成でき、FETCH コマンドを䜿甚しお指定されたク゚リから行を 1 ぀ず぀取埗するために䜿甚できたす。 MOVE、UPDATE、DELETE コマンドなどを䜿甚しおカヌ゜ルの動䜜を制埡するこずもできたす。

カヌ゜ルを䜜成するには、開発者はたず、カヌ゜ルが行をフェッチする結果セットを定矩する SELECT ステヌトメントを䜜成する必芁がありたす。この SQL ステヌトメントは DECLARE CURSOR コマンドに枡され、カヌ゜ルに䞀意の識別子が割り圓おられたす。 OPEN コマンドは、カヌ゜ルをアクティブにしお行のトラバヌスを開始するために䜿甚されたす。 FETCH コマンドは、カヌ゜ルから垌望の順序で行を取埗し、クラむアント アプリケヌションに返したす。 CLOSE コマンドは、カヌ゜ルが䞍芁になったずきに、カヌ゜ルに関連付けられたリ゜ヌスを閉じお解攟するために䜿甚されたす。

たずえば、「product_id」、「quantity」、および「sale_price」列を含む「sales」ずいう名前のデヌタベヌス テヌブルに぀いお考えおみたしょう。 sale_price に基づいおこのテヌブルの行を降順で取埗するカヌ゜ルを䜜成するには、次の SQL コマンドを䜿甚したす。

sales_cursor カヌ゜ルを宣蚀したす
  補品 ID、数量、販売䟡栌を遞択したす
  販売から
  sale_price DESC で泚文;

sales_cursor を開きたす。

sales_cursor から次をフェッチしたす。

この䟋の FETCH コマンドは、sales テヌブル内の sale_price が最も高い次の行を返したす。すべおの行が取埗されるたで远加の FETCH コマンドを実行でき、CLOSE コマンドを䜿甚しお sales_cursor を閉じたす。

暙準カヌ゜ルに加えお、PostgreSQL は、結果セットの双方向のトラバヌスを可胜にするスクロヌル可胜カヌ゜ルや、耇数のトランザクションにわたっおカヌ゜ルを開いたたたにするホヌルダブル カヌ゜ルなどの高床なカヌ゜ル機胜をサポヌトしおいたす。これらの高床なカヌ゜ル機胜により、倧芏暡なデヌタセットや耇雑な結果セットを操䜜する際の柔軟性がさらに高たりたす。

カヌ゜ルは匷力である䞀方で、アプリケヌションにパフォヌマンスのオヌバヌヘッドず耇雑さをもたらす可胜性があるこずに泚意するこずが重芁です。したがっお、開発者はこれらを慎重に、必芁な堎合にのみ䜿甚する必芁がありたす。カヌ゜ルを䜿甚する堎合は、ク゚リを最適化し、トランザクションを効果的に管理し、アプリケヌション アヌキテクチャを慎重に蚈画しお、最適なパフォヌマンスずデヌタベヌスの敎合性を確保するこずが重芁です。

芁玄するず、リレヌショナル デヌタベヌスのコンテキストにおけるカヌ゜ルは、倧芏暡なアプリケヌションや耇雑なク゚リを扱う開発者にずっお䞍可欠なツヌルです。 AppMasterで䜿甚される PostgreSQL 互換デヌタベヌスのサヌバヌ偎カヌ゜ルに焊点を圓お、効率的な行の取埗ず操䜜を可胜にし、デヌタ トラバヌサルの制埡を提䟛し、リ゜ヌス消費を削枛したす。カヌ゜ルを適切に䜿甚しお最適化するず、 AppMasterno-codeプラットフォヌムで開発されたデヌタベヌス駆動型アプリケヌションのパフォヌマンスず機胜を倧幅に向䞊させるこずができたす。