簡體   English   中英

Delphi 2010 Datasnap - 設計查詢

[英]Delphi 2010 Datasnap - Design Query

我正在研究將基於SQL的胖客戶端Delphi應用程序移動到Multi Tier瘦客戶端,並且一直在考慮在Delphi 2010中使用Datasnap。我已經完成了Bob Swart編寫的白皮書並進一步擴展了這一點。

我的主要問題是,我想讓服務器端在連接和SQL查詢方面高效,因為多個查詢正在運行並且同時保持打開以查詢數據,任何人都可以指出我的指導如何設計一個真實世界的Datasnap Server應用程序,因為該演示沒有詳細介紹。

謝謝馬特

你必須決定你的設計:

  • (中間服務器)將管理會話或客戶端將識別他們的會話每個連接(有狀態與無狀態)

  • (中間服務器)您希望擁有多少緩存數據。 你可以只緩存一些煩人的非常穩定的表,只在它們發生變化時查詢它們(如果所有修改都通過服務器中間,如果沒有,你需要像任意標記一樣的東西 - 一個GUID,一個計數器 - 在表上匹配數據改變)。

  • (客戶端/中間服務器)如​​果您的客戶端將始終獲得完整的數據集合或集合的片段。 (例如:產品可以有categoryId列,它是Category表的FK。您可以一直發送兩者,或者客戶端只能請求產品數據)。

  • (中間服務器/ RDBMS)您可能必須提供某種形式的自定義搜索。 如果您對最常用的搜索條件有所了解,則可以提供(如果需要)索引覆蓋來執行此操作。

  • (中間服務器/ RDBMS)除非您計划對數據進行一些積極的緩存和/或對它們有一些好用,否則不要將優秀的數據集帶到中間服務器。 中間服務器只是RDBMS的另一個客戶端應用程序 - 如果兩者都在同一台機器上,您可以與RDBMS進入內存/ CPU / IO競爭。

  • (Mid-Server / RDBMS)在Mid-Server上執行您的業務規則,是許多純粹主義者的口頭禪。 對我來說,均衡是關鍵。 假設RDBMS有2000個存儲過程(我沒有說明,有真正的業務有這么多的SP),你的中型服務器可以在SP,GREAT解決2000個問題中的1500個問題上做出很好的工作。 但如果最后的500可以改變最壞的情況,那就讓他們獨自一人。 它可能比1500更麻煩。所以將兩者混合,並使這500個軟件項目成為另一個版本。

  • (中間服務器/ RDBMS)我對存儲過程的說法也可以應用於觸發器和其他任何其他類型的RDBMS服務器功能,可以使您的生活更輕松。

  • (Mid-Server / DataSnap)大多數原始細節都可以讓數據集提供者使用。 但學會利用OnBeforeUpdateRecord事件在需要時進行自定義處理。

  • (Mid-Server / DataSnap)您知道您可以通過下面這類代碼修改數據來創建ClientDataset嗎? 你無法想象它有多么有用...... :-)

    Cds_New.Data:= Cds_Updated.Delta;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM