導航:首頁 > 編程語言 > pb環境下分布式應用程序的開發

pb環境下分布式應用程序的開發

發布時間:2022-11-16 15:54:52

⑴ 怎樣用PowerBuilder開發WEB應用

1powerbuilder中的web應用模塊

powerbuilder中含有開發web應用的模塊,通過這些模塊可以連接web伺服器與powerbuilder應用.該模塊包括以下及部分,web.pb:是幾個可以在web伺服器上執行的程序,被伺服器激活後,調用powerbuilder應用,完成客戶端任務和對資料庫的事務操作.plug_ins(插入件):包括window plug_in和datawindow plug_in,此方式可將powerbuilder對象嵌入到頁面中,在瀏覽器端執行powerbuilder應用.window activex:此方式與window plug_in類似, 所不同在於該方式可以和html中的javascripts,vbscripts交互.本文主要討論利用web.pb開發web應用.

2用web.pb開發web應用

web.pb本身就是個cgi程序,它提供了從伺服器到powerbuilder應用的訪問.所以在web.pb之上,可以利用powerbuilder的強大功能開發復雜的web應用,如採用powerbuilder的powerscripts語言環境,數據窗口技
術等.powerbuilder的web應用構建前提是分布式應用體系.powerbuilder的客戶端應用分布到web伺服器上,可將web.pb看
作為客戶端應用.當客戶端應用web.pb被web伺服器激活後,調用powerbuilder的伺服器應用,執行在伺服器應用中定義的方法,實現業務邏
輯.

這種模式是真正的「廋」客戶機模式,客戶端不需要安裝其它軟體,只安裝瀏覽器軟體.所有的事務操作都在伺服器端完成,下面將結合實例詳細說明:


用powerbuilder開發一個網上購書應用.對於分布式powerbuilder應用,首先應向客戶web.pb指明powerbuilder服務
器應用在網路上的位置(location),其應用名,使用文件pbweb.ini來記錄伺服器應用信息.在此例中,取伺服器應用名為tutorial,
driver=winsock, application=10099/tcp, location=localhost.

建一個資料庫(book_dealing)其中有三個表,分別為:

「 book」: b_name, b_no, b_publisher, b_price,b_num

「customer」: c_name, c_tel,c_addr

「dealing」: b_name, c_name, d_num, d_time

建一個數據窗口dw_book,其sql語法為:

select 「book」.」b_name」,

「book」.」b_no」,

「book」.」b_publisher」,

「book」.」b_price」,

「book」.」b_num」

from 「book」

創建pb伺服器應用的用戶界面。在窗口w_server上有兩個按鈕cb_1,cb_2,再定義一個transport類型的實例變數mytransport,cb_1的clicked事件有關程序如下:

..........

mytransport = create transport

mytransport .driver = 「winsock」

mytransport.location = 「localhost」

mytransport.application = 「10099」

.........

創建一個不可視的用戶對象u_internet,定義一個transaction類型的全局變數mytransaction,在該用戶對象的constructor事件中定義連接到資料庫(book_dealing)的事務對象mytransaction和連接到資料庫(webpb)的事務對象sqlca,在該對象的destructor事件中分別取消這兩個事務對象。

在u_internet上定義兩個函數分別為f_book, f_book_dealing,這兩個函數的返回值都為字元類型。在f_book中,利用數據窗口dw_book作資料庫查詢,再利用數據窗口的屬性將查詢結果以html形式返回給web.pb,有關程序如下:

string return_html

datastore dd

dd = create datastore

dd.dataobject = 」dw_book」

dd.settransobject(mytransaction)

dd.retrieve()

.... .

return_html=return_html+dd.object.datawindow.data.htmltable

......

return return_html


函數f_dealing中,定義參數分別為:book_name, deal_num, custom_name, deal_time,
custom_tel,
custom_addr,用來接受form元素傳來的信息。再利用powerscripts語言對資料庫(book_dealing)進行修改。有關程序
如下:

string return_html

…………

connection using mytransaction;

insert into 「customer」

(「c_name」,

「c_tel」,

「c_addr」)

values( :custom_name, :custom_tel, :custom_addr);

insert into 「dealing」

(「b_name」,

」d_num」,

」d_time」,

」c_name」)

value(:book_name, :deal_num, :deal_time, :custom_name);

if mytransaction.sqlcacode>0 then

return_html=」定貨成功!」

else

return_html=」定貨失敗!」

endif

………..

return return_html

主頁上的「瀏覽書庫」的超連接為:

〈a herf=」/scripts/pbcgi60.exe/tutorial/u_internet/f_book」〉 瀏覽書庫</a>

定書信息頁上應有幾個單行編輯器,用來錄入用戶購書信息(例如:書名,用戶名,購書數量.,等等)其form元素的action為:

<form action= 「/scripts/pbcgi60.exe/tutorial/u_internet/f_book_dealing」method= 「get」>

以上程序可實現簡單的網上購書的功能,既用戶可瀏覽書庫,也可訂購所需的圖書。

⑵ pb介面用pb嗎

PB內置Oracle資料庫介面的使用方法2008-12-23 13:34PowerBuilder(PB)和Oracle分別是前端開發工具和RDBMS的主流產品。PB提供了兩種與Oracle連接的介面:PowerSoft內置的資料庫介面(Native Database Interface)和ODBC介面。本文介紹使用PB6 0內置Oracle介面的方法,包括數據描述文件的設置、存儲過程的調用和存儲過程作為數據窗口數據源的操作方法等內容,使用的RDBMS的Oracle 7 3。
PowerBuilder與Oracle的連接

假定已安裝Oracle客戶端應用程序。可用Sqlplus或Tnsping等是否能連接到Oracle資料庫,確定在SQL NET配置文件中使用的資料庫別名(Database Alias,又稱伺服器名,Server Name)。如有疑問,可在Oracle客戶端程序目錄下tnsname.ora文件中找到。另外保證搜索路徑已包括SQL*NET應用程序的安裝目錄(如C:\ORAWIN95\BIN)。

進入PB的Database Profiles畫筆,可看到所有已安裝的資料庫介面(PB6 0預設安裝的是Oracle 7 3版的介面,如使用低版本的Oracle,需在安裝時指定),選擇「O73 Oracle 7 3」,點擊「New」按鈕,進入Database Profile Setup對話框。在「Connection」頁輸入下列信息:Profile Name:為該Database Profile起一個有意義的名稱;

Server:@TNS:ServerName,其中ServerName為上述資料庫別名(伺服器名),如@TNS:ORA73;注意:PB9.5則沒有前面那個@TNS:!!!

Login ID:Oracle資料庫中實際的用戶名,由於PB初次連接到資料庫時要自動建立五個系統表(PowerBuilder

Catalog Table:PBCATTBL,PBCATCOL,PBCATEDT,PBCATFMT,PBCATVLD,存儲表的擴展屬性),因此第一個連接到Oracle

的用戶必須具有建表、給PUBLIC角色授權等許可權。例如可用SYSTEM用戶進行第一次連接;,此後的連接對用戶則無特殊要求

Password:該用戶的口令。

設置上述內容後,即可連上Oracle。為優化資料庫連接,還可設置下列選項:

Prompt for Database Information:連接時是否提示用戶輸入用戶名和口令;

Generate Trace:啟動DB跟蹤工具,跟蹤連接;

Thread Safe:開發需要多線程環境支持的分布式應用時,選擇該項。預設為未選,適用於非分布應用;

PBDBMS:與存儲過程調用方式有關的參數。Oracle為7 2或更高版本時,清除該選項,此時帶IN OUT參數的存儲過程可作為數據窗口數據源。7 2版本以下,選擇該項,調用PBDBMS.Put-Line建立存儲過程的SQL語句,預設是選中;

Commit on Disconnect:斷開連接時,指定提交或回退未提交的事務;

Case Sensitive:連接的Oracle伺服器是否區分大小寫。注意該項選中時,所有主鍵、包含主鍵的表名、外鍵須全為大寫字元。

PowerBuilder Catalog Tables Owner:指定擁有PB系統表的用戶,預設為「SYSTEM」。如果要使用多種顯示

格式或有效性規則,可以在不同的用戶下建立幾套系統表;

Table Criteria:指定滿足哪些條件的表、視圖和同義詞可在「Select Tables」對話框中顯示出來。例如DEV

用戶下銷售子系統的表都以SALE開頭,則可以用SALE%、DEV、「TABLE」、「VIEW」指定只顯示DEV用戶以SALE開頭的表和視圖;

Asynchronous:選擇該項,可在一個復雜的SQL語句執行過程中,返回第一行結果前,切換到其他操作;

Number of Seconds to Wait:若上一項選中,還可進一步通過該項指定檢索數據時,等待資料庫響應的時間;

Retrieve Blocking Factor:決定數據窗口對象一次可從資料庫取出的記錄數;

Number of SQL Staments Cached:PB可將數據窗口對象產生的SQL語句和嵌入式SQL語句保存在SQL語句緩沖區,該參數指定緩沖區為PB保留的SQL語句數目。該數值可由下式計算:SQLCache=伺服器OPEN—CURSORS數-5(保留的游標數)-本連接預期使用的最大游標數;

Disable Bind:指定是否將輸入變數與SQL語句綁定,此參數影響PB為數據窗口對象生成INSERT語句的方式;

Static Bind:數據窗口對象檢索數據前是否檢測SELECT語句的合法性;

在Syntax頁,還可指定日期、時間的格式等。在Preview頁可查看Database Profile設置對應的PowerScript寫法。

Oracle存儲過程的使用

歸納起來PB6 0中調用Oracle存儲過程有以下四種方法。

方法一:以關鍵字RPCFUNC聲明存儲過程;

方法二:以DECLARE PROCEDURE語句聲明存儲過程;

方法三:以動態SQL語句實現;

方法四:調用函數PBDBMS.Put-Line。

一般情況下,方法一能得到較好的運行效率和更完善的功能。因此推薦使用方法一。但是某些類型的存儲過程只能使用其他方法。以下重點介紹方法一和方法二。

兩種方法比較起來,有以下幾點主要區別:

1)方法一適用於具有IN、OUT和IN OUT參數的存儲過程,而方法二僅支持IN和OUT參數,不支持IN OUT參數;

2)方法一對參數的數目無限制,方法二最多支持255個參數;

3)方法一不支持記錄(Recorder)的傳遞,方法二可傳遞和接收記錄。

方法一操作步驟:

1)在用戶對象畫筆中創建一個Class-Standard類型的,從Transaction繼承的用戶對象。

2)在此用戶對象中,聲明Local External Functions,將存儲過程以RPCFUNC關鍵字聲明為外部函數。在Declare Local External Functions對話框中按Proceres按鈕選擇要調用的後台存儲過程,或直接輸入類似subroutin

e TEST(long id,ref string name)RPCFUNC ALIAS FOR 「DEV TEST」的語句。例如中DEV TEST的參數為(id IN NUMBER,name IN OUT VARCHAR2)。

3)保存該用戶對象。

4)在Application畫筆中,進入應用屬性對話框,在Variable Types頁,將上Transaction用戶對象設置為預設的全局變數SQLCA。

5)腳本中,編碼調用相應的外部函數。形式:SQLCA 函數名(參數)。如可用「SQLCA TEST(ln—id,ls—name);」調用例子中定義的DEV TEST存儲過程。其中ln—id,ls—name為調用參數。

方法一注意事項:

1)由於PB中String類型的數據長度是動態分配的,因此對Ref String類型的參數,每次調用前需要申請足夠的

空間。例如上例從輸入的id值檢索name,後台聲明的NAME數據類型為VARCHAR2(30),每次調用SQLCA TEST前需要

用ls—name=SPACE(30)置ls—name為足夠長度的空串。

2)類似地當傳遞的參數為數組(後台稱PL/SQL Table)時,聲明參數為相應類型的動態數組,並在每次調用前設

置數組上界為足夠大的值。例如:DEV用戶的DEPT包中聲明了TYPE tbl—name IS TABLE OF VARCHAR2(30) INDEX B

Y BINARY—INTEGER;存儲過程EMP—OF—DEPT(dept—id IN NUMBER,name OUT DEPT.tbl—name)返回部門編寫為de

pt—id的部門的所有員工,置name數組中。假定所有部門的員工數目不超過100,則可用以下語句聲明和調用DEV.EMP—OF—DEPT:

Declare External Functions對話框中:

Subroutine EMP—OF—DEPT(long dept—id,ref string name[]) RPCFUNC ALIAS FOR 〃DEV.EMP—OF—DEPT〃

PowerScript腳本中:

long ln=dept—id

string lsa—name[]

……

lsa—name[100]=〃 //置動態數組lsa—name上界為

100

ln—dept—id=2

SQLCA.EMP—OF—DEPT(ln—dept—id,lsa—name) /

/檢索部門2的所有員工的名字

方法二使用方法:

在腳本中加入如下編碼(以DEV TEST為例):

long ln—id

string ls—name

ln—id=100

DECLARE test PROCEDURE FOR DEV.TEST(:ln—id);

//test有一個IN參數,一個OUT參數

EXECUTE test;

FETCH test INTO:ls—name;

方法三使用方法:

根據輸入輸出參數的不同,PB中的動態SQL語句有四種格式:1)無輸入輸出參數;2)只有輸入參數,無輸出參

數;3)有確定數目輸入輸出參數;4)輸出結果列的數目不定。其中第1)、第2)中格式的動態SQL語句也可用來調用簡

單的存儲過程。

1)沒有輸入輸出參數的存儲過程。例如DEV DEMO1存儲過程沒有輸入輸出參數,可用下列語句調用:

sqlstring=〃EXECUTE DEMO1()〃

EXECUTE IMMEDIATE:sqlstring;

2)只有輸入參數的存儲過程。例如DEV.DEMO2(name IN VARCHAR2,birthday IN DATE)

PREPARE SQLSA FROM 〃EXECUTE DEMO2(?,?);〃

EXECUTE SQLSA USING:ls—name,:ldt—birthday;

如果是7 2以下版本的Oracle,可用方法四PBDMBS.Put—Line()函數調用建立存儲過程。此時需選上Database Profile中的PBDBMS復選框。

存儲過程作為數據窗口的數據源

以一個簡單數據窗口(顯示伺服器的系統時間)為例說明怎樣創建存儲過程作為數據源的數據窗口。

1)在某個包(如PACK—TYPE)中定義日期類型的Recorder自定義數據類型datarec;

2)創建返回系統時間的存儲過程:

PROCEDURE get—sysdata(sysdt IN OUT PACK-TYPE

.datarec)IS

BEGIN

open sysdt for select sysdate from al;

END;

⑶ 分布式應用程序的簡介

分布式應用程序是指:應用程序分布在不同計算機上,通過網路來共同完成一項任務。通常為伺服器/客戶端模式。
研究一下當前的應用程序開發,你會發現一個絕對的傾向:人們開始偏愛基於瀏覽器的客戶應用程序。這當然不是因為客戶能夠提供更好的用戶界面,而是因為它能夠避免花在桌面應用程序發布上的高成本。發布桌面應用程序成本很高,一半是因為應用程序安裝和配置的問題,另一半是因為客戶和伺服器之間通信的問題。

⑷ 編程中93怎樣實現PB中多線程技術

用PB編寫多線程應用程序

多線程是指一個程序內部同時執行的多個流程,與單線程相比,它至少有兩個方面的優點:第一,它可以更好地利用系統資源,比如CPU,若一個線程因I/O操作受阻,另一個線程仍可利用CPU來執行;第二,它更好地滿足了客戶的需求,因為挑剔的客戶希望你開發的程序在顯示動畫的同時還能播放音樂、顯示文件、下載網路文件等,這是單線程應用程序無法完成的。目前,支持多線程的開發工具主要有:Java、VC、Delphi和C++Builder。
多線程強調的是一個進程內部有多個流程在同時執行,同時執行的概念相當於PB分布式計算中的非同步處理。也就是說,只要我們在一個程序內部實現了非同步處理,就相當於實現了多線程。分析至此,下一步該怎麼做就不言而喻了:在一個應用程序內部實現分布式計算,使用伺服器推送技術,非同步執行共享對象中的函數。

下面就編寫一個Demo,介紹在PB中如何利用分布式計算技術來開發多線程應用程序,其程序結構如圖1所示。uo—thread1和uo—thread2是類用戶對象uo—thread的兩個實例,uo—thread的功能是給實例變數li—Count自加5秒,自加的同時向中間對象uo—argv1和uo—argv2發送ue—thread消息。兩個中間對象的功能是把ue—thread消息轉化為ue—thread1和ue—thread2後發給主窗口w—main。

主窗口接收到ue—thread1消息後,顯示uo—thread1中自加變數的值,接收到ue—thread2後,顯示uo—thread2中自加變數的值。在單線程中,uo—thread1先執行,5秒鍾後uo—thread2開始執行,因此,前5秒內主窗口只能收到ue—thread1消息,後5秒內只能收到ue—thread2消息。在多線程中,uo—thread1和uo—thread2同時執行,因此w—main可以不斷地收到ue—thread1和ue—thread2消息。

1.設計用戶對象uo—thread

新建一個類用戶對象,命名為uo—thread,添加如下兩個實例變數:

NonVisualObject inv—arg

Long li—Count //自加變數

創建如下三個用戶函數:

⑴uf—start(),功能是:完成自加5秒並向中間對象發送ue—thread消息。腳本為:

Time t0

t0= Now() //獲取當前時間

Do While SecondsAfter(t0,Now())〈=5

li—Count++//實例變數自加5秒

inv—arg.TriggerEvent(′ue—thread′)

//向中間對象發送ue—thread消息

Loop

⑵uf—getcount(),功能是:獲取自加變數的瞬間值。其腳本為:

Return li—Count //返回實例變數

⑶uf—setparent(NonVisualObject nv—arg),調用時,使用中間對象為參數。腳本為:

inv—arg=nv—arg

//用中間對象給實例變數賦值

⑸ Ceph:一個 Linux PB 級分布式文件系統

Ceph 最初是一項關於存儲系統的 PhD 研究項目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)實施。但是到了 2010 年 3 月底,您可以在主線 Linux 內核(從 2.6.34 版開始)中找到 Ceph 的身影。雖然 Ceph 可能還不適用於生產環境,但它對測試目的還是非常有用的。本文探討了 Ceph 文件系統及其獨有的功能,這些功能讓它成為可擴展分布式存儲的最有吸引力的備選。

「Ceph」 對一個文件系統來說是個奇怪的名字,它打破了大多數人遵循的典型縮寫趨勢。這個名字和 UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是 「Sammy」,一個香蕉色的蛞蝓,就是頭足類中無殼的軟體動物。這些有多觸角的頭足類動物,提供了一個分布式文件系統的最形象比喻。

開發一個分布式文件系統需要多方努力,但是如果能准確地解決問題,它就是無價的。Ceph 的目標簡單地定義為:

不幸的是,這些目標之間會互相競爭(例如,可擴展性會降低或者抑制性能或者影響可靠性)。Ceph 開發了一些非常有趣的概念(例如,動態元數據分區,數據分布和復制),這些概念在本文中只進行簡短地探討。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級存儲)存儲故障是常見現象而不是例外情況。最後,它的設計並沒有假設某種特殊工作負載,但是包括適應變化的工作負載,提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 為目標的改進)的應用進行透明的部署。最後,Ceph 是開源分布式存儲,也是主線 Linux 內核(2.6.34)的一部分。

現在,讓我們探討一下 Ceph 的架構以及高端的核心要素。然後我會拓展到另一層次,說明 Ceph 中一些關鍵的方面,提供更詳細的探討。

Ceph 生態系統可以大致劃分為四部分(見圖 1):客戶端(數據用戶),元數據伺服器(緩存和同步分布式元數據),一個對象存儲集群(將數據和元數據作為對象存儲,執行其他關鍵職能),以及最後的集群監視器(執行監視功能)。

如圖 1 所示,客戶使用元數據伺服器,執行元數據操作(來確定數據位置)。元數據伺服器管理數據位置,以及在何處存儲新數據。值得注意的是,元數據存儲在一個存儲集群(標為 「元數據 I/O」)。實際的文件 I/O 發生在客戶和對象存儲集群之間。這樣一來,更高層次的 POSIX 功能(例如,打開、關閉、重命名)就由元數據伺服器管理,不過 POSIX 功能(例如讀和寫)則直接由對象存儲集群管理。

另一個架構視圖由圖 2 提供。一系列伺服器通過一個客戶界面訪問 Ceph 生態系統,這就明白了元數據伺服器和對象級存儲器之間的關系。分布式存儲系統可以在一些層中查看,包括一個存儲設備的格式(Extent and B-tree-based Object File System [EBOFS] 或者一個備選),還有一個設計用於管理數據復制,故障檢測,恢復,以及隨後的數據遷移的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage (RADOS)。最後,監視器用於識別組件故障,包括隨後的通知。

了解了 Ceph 的概念架構之後,您可以挖掘到另一個層次,了解在 Ceph 中實現的主要組件。Ceph 和傳統的文件系統之間的重要差異之一就是,它將智能都用在了生態環境而不是文件系統本身。

圖 3 顯示了一個簡單的 Ceph 生態系統。Ceph Client 是 Ceph 文件系統的用戶。Ceph Metadata Daemon 提供了元數據伺服器,而 Ceph Object Storage Daemon 提供了實際存儲(對數據和元數據兩者)。最後,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客戶,對象存儲端點,元數據伺服器(根據文件系統的容量)可以有許多,而且至少有一對冗餘的監視器。那麼,這個文件系統是如何分布的呢?

早期版本的 Ceph 利用在 User SpacE(FUSE)的 Filesystems,它把文件系統推入到用戶空間,還可以很大程度上簡化其開發。但是今天,Ceph 已經被集成到主線內核,使其更快速,因為用戶空間上下文交換機對文件系統 I/O 已經不再需要。

因為 Linux 顯示文件系統的一個公共界面(通過虛擬文件系統交換機 [VFS]),Ceph 的用戶透視圖就是透明的。管理員的透視圖肯定是不同的,考慮到很多伺服器會包含存儲系統這一潛在因素(要查看更多創建 Ceph 集群的信息,見 參考資料 部分)。從用戶的角度看,他們訪問大容量的存儲系統,卻不知道下面聚合成一個大容量的存儲池的元數據伺服器,監視器,還有獨立的對象存儲設備。用戶只是簡單地看到一個安裝點,在這點上可以執行標准文件 I/O。

Ceph 文件系統 — 或者至少是客戶端介面 — 在 Linux 內核中實現。值得注意的是,在大多數文件系統中,所有的控制和智能在內核的文件系統源本身中執行。但是,在 Ceph 中,文件系統的智能分布在節點上,這簡化了客戶端介面,並為 Ceph 提供了大規模(甚至動態)擴展能力。

Ceph 使用一個有趣的備選,而不是依賴分配列表(將磁碟上的塊映射到指定文件的元數據)。Linux 透視圖中的一個文件會分配到一個來自元數據伺服器的 inode number(INO),對於文件這是一個唯一的標識符。然後文件被推入一些對象中(根據文件的大小)。使用 INO 和 object number(ONO),每個對象都分配到一個對象 ID(OID)。在 OID 上使用一個簡單的哈希,每個對象都被分配到一個放置組。 放置組 (標識為 PGID)是一個對象的概念容器。最後,放置組到對象存儲設備的映射是一個偽隨機映射,使用一個叫做 Controlled Replication Under Scalable Hashing (CRUSH)的演算法。這樣一來,放置組(以及副本)到存儲設備的映射就不用依賴任何元數據,而是依賴一個偽隨機的映射函數。這種操作是理想的,因為它把存儲的開銷最小化,簡化了分配和數據查詢。

分配的最後組件是集群映射。 集群映射 是設備的有效表示,顯示了存儲集群。有了 PGID 和集群映射,您就可以定位任何對象。

元數據伺服器(cmds)的工作就是管理文件系統的名稱空間。雖然元數據和數據兩者都存儲在對象存儲集群,但兩者分別管理,支持可擴展性。事實上,元數據在一個元數據伺服器集群上被進一步拆分,元數據伺服器能夠自適應地復制和分配名稱空間,避免出現熱點。如圖 4 所示,元數據伺服器管理名稱空間部分,可以(為冗餘和性能)進行重疊。元數據伺服器到名稱空間的映射在 Ceph 中使用動態子樹邏輯分區執行,它允許 Ceph 對變化的工作負載進行調整(在元數據伺服器之間遷移名稱空間)同時保留性能的位置。

但是因為每個元數據伺服器只是簡單地管理客戶端人口的名稱空間,它的主要應用就是一個智能元數據緩存(因為實際的元數據最終存儲在對象存儲集群中)。進行寫操作的元數據被緩存在一個短期的日誌中,它最終還是被推入物理存儲器中。這個動作允許元數據伺服器將最近的元數據回饋給客戶(這在元數據操作中很常見)。這個日誌對故障恢復也很有用:如果元數據伺服器發生故障,它的日誌就會被重放,保證元數據安全存儲在磁碟上。

元數據伺服器管理 inode 空間,將文件名轉變為元數據。元數據伺服器將文件名轉變為索引節點,文件大小,和 Ceph 客戶端用於文件 I/O 的分段數據(布局)。

Ceph 包含實施集群映射管理的監視器,但是故障管理的一些要素是在對象存儲本身中執行的。當對象存儲設備發生故障或者新設備添加時,監視器就檢測和維護一個有效的集群映射。這個功能按一種分布的方式執行,這種方式中映射升級可以和當前的流量通信。Ceph 使用 Paxos,它是一系列分布式共識演算法。

和傳統的對象存儲類似,Ceph 存儲節點不僅包括存儲,還包括智能。傳統的驅動是只響應來自啟動者的命令的簡單目標。但是對象存儲設備是智能設備,它能作為目標和啟動者,支持與其他對象存儲設備的通信和合作。

從存儲角度來看,Ceph 對象存儲設備執行從對象到塊的映射(在客戶端的文件系統層中常常執行的任務)。這個動作允許本地實體以最佳方式決定怎樣存儲一個對象。Ceph 的早期版本在一個名為 EBOFS 的本地存儲器上實現一個自定義低級文件系統。這個系統實現一個到底層存儲的非標准介面,這個底層存儲已針對對象語義和其他特性(例如對磁碟提交的非同步通知)調優。今天,B-tree 文件系統(BTRFS)可以被用於存儲節點,它已經實現了部分必要功能(例如嵌入式完整性)。

因為 Ceph 客戶實現 CRUSH,而且對磁碟上的文件映射塊一無所知,下面的存儲設備就能安全地管理對象到塊的映射。這允許存儲節點復制數據(當發現一個設備出現故障時)。分配故障恢復也允許存儲系統擴展,因為故障檢測和恢復跨生態系統分配。Ceph 稱其為 RADOS(見 圖 3 )。

如果文件系統的動態和自適應特性不夠,Ceph 還執行一些用戶可視的有趣功能。用戶可以創建快照,例如,在 Ceph 的任何子目錄上(包括所有內容)。文件和容量計算可以在子目錄級別上執行,它報告一個給定子目錄(以及其包含的內容)的存儲大小和文件數量。

雖然 Ceph 現在被集成在主線 Linux 內核中,但只是標識為實驗性的。在這種狀態下的文件系統對測試是有用的,但是對生產環境沒有做好准備。但是考慮到 Ceph 加入到 Linux 內核的行列,還有其創建人想繼續研發的動機,不久之後它應該就能用於解決您的海量存儲需要了。

Ceph 在分布式文件系統空間中並不是唯一的,但它在管理大容量存儲生態環境的方法上是獨一無二的。分布式文件系統的其他例子包括 Google File System(GFS),General Parallel File System(GPFS),還有 Lustre,這只提到了一部分。Ceph 背後的想法為分布式文件系統提供了一個有趣的未來,因為海量級別存儲導致了海量存儲問題的唯一挑戰。

⑹ 如何用pb開發基於c\s模式的系統

用PowerBuilder6建立browser/server結構應用程序
1998.10.20 新疆財院計算中心 孫彬 王東
【摘要】本文主要論述Powerbuilder6.0實現 Browser/Server結構的Internet解決方案和工作方式,對實現該方式的幾種重要模塊的數據流程進行論述,最後給出實例。
PowerBuilder 6.0實現「Web瀏覽器-資料庫伺服器」方案的前提條件是構建分布式應用體系。將 Powerbuilder6.0應用分布到Internet結構下,也就是把PowerBuilder 6.0客戶端應用分布到Web伺服器上,當瀏覽器客戶端向Web 伺服器發出服務請求時,Web伺服器自動調用Powerbuilder應用軟體系統, 從而實現各種業務軟體的Internet結構功能。
一、組成Browser/Server結構的模塊結構。
由上圖所示, 用 Powerbuilder6. 0 開發的各種基於Internet的應用,是利用PowerBuilder6.0 提供的分布式應用技術及PowerScripts編程技術來實現的,相當於編寫分布式應用環境下的伺服器應用。例如採用PowerScripts語言環境、數據窗口技術等。其製作流程及工作原理是:
1. 建立及配置 Web 伺服器。 PowerBuilder 中自帶O'Reilly公司基於WindowsNT 3.51以上版本和Win 95/98平台的32位多線程個人Web伺服器WebSite 1.1版。該Web 伺服器提供了完整的Web服務創建、管理環境和安全機制。
2.在Web伺服器上建立可執行程序(Web.Pb)。Web.pb(Pbcgi60.exe)程序主要功能是調用PowerBuilder應用伺服器中預置的處理程序,包括分析執行用戶對象中的用戶函數,反饋HTML控制流和生成解釋插入件程序等。
Web.PB是用來開發基於Web應用的基本部件,該部件本身就是Web上的一個網關應用程序。該工具提供從 Web伺服器到PowerBuilder應用伺服器的訪問,允許用戶在 Internet以及Intranet下,通過Web對資料庫進行近於完全的操縱。同時,通過Web.PB,動態創建HTML文檔亦成為可能。Web.PB程序是Web伺服器和 PowerBuilder應用伺服器相連接的橋梁。使用Web.PB構建Web應用有如下優點:
a.支持CGI、ISAPI、NSAPI、MSAPI等多種網關程序介面。
b.支持PowerBuilder中數據窗口的引用。
c.易於將以前編寫的PowerBuilder應用移植到Web環境下。
d.易於創建嵌入PowerBuilder應用程序的HTML文件,應用伺服器在運行環境下,將根據用戶需求, 動態生成HTML語法,發布完全動態的信息。
e.支持資料庫連接。PowerBuilder所能夠連接到的資料庫都可以被瀏覽器用戶訪問到,使得 Web服務與資料庫服務通過Powerbuilder 6.0完整地結合起來。
3.建立PowerBuilder應用伺服器。PowerBuilder應用伺服器主要是一些用於激活Powerbuilder6.0 業務應用的類庫程序組成。創建上圖所示的PowerBuilder應用伺服器時,須引用Powerbuilder6.0 Web類庫,類庫中定義了五種定製的類用戶對象,封裝了創建HTML語法及事務管理所需的函數、結構和實例等多種實體,可用來創建HTML語法、管理客戶瀏覽器連接的狀態等。PowerBuilder 6.0應用伺服器相當於分布式應用中客戶端應用,用於向PowerBuilder6.0業務應用發出調用請求。執行方法是:當Powerbuilder6.0 應用伺服器監聽到Web.PB的請求後,則啟動PowerBuilder應用伺服器中已預定義的業務處理程序。
例如,當用戶在瀏覽器端使用Web瀏覽器(IE或Netscape)瀏覽頁面時,通過在HTML頁面中嵌入的 <A>或<FORM>元素,Web伺服器可自動激活Web.PB應用。活動的Web伺服器首先調用PowerBuilder6.0的Web.PB類程序,作為PowerBuilder 分布式應用中的客戶端應用,建立與PowerBuilder 6.0應用伺服器的連接,然後調用PowerBuilder6.0應用伺服器中定義的各個業務功能,也就是用戶自定義對象中封裝的用戶函數,包括資料庫訪問和文件處理等數據處理功能。
4.建立PowerBuilder業務應用程序。在用戶自定義對象中,創建用戶自定義函數。功能要求是根據瀏覽器端用戶的需求,進行業務數據處理,把處理結果以HTML頁格式,反饋給web.pb程序,經常用於人事管理、財務管理、信息數據處理和系統管理等業務工作。
PowerBuilder業務應用程序有插入件(Plug_ins)和嵌入HTML文件兩種風格。Plug-ins(插入件)的使用方法又分成Window plug-ins和Datawindow plug-ins兩種。
Window plug-ins 插入件編制業務程序的的方法是 : 在HTML頁面上,嵌入並顯示PowerBuilder6.0中Child 類型的窗口對象,可放置數據窗口(DataWindow)、樹狀瀏覽(TreeView)、Tab頁等豐富多彩的控制項類型, 豐富HTML頁面的表現形式。當客戶端用瀏覽器瀏覽頁面時,Web伺服器將PSR文件或PBD文件卸載給客戶,客戶瀏覽器接收到PSR文件和PBD文件,將Child窗口對象嵌入在Web 頁面中,如果嵌入的是窗口對象,則窗口上定義的功能在瀏覽器環境下同樣能使用,如窗口上定義了資料庫操縱的功能,則在瀏覽器客戶端能直接連接操縱資料庫。Plug-ins起到了將PowerBuilder6.0對象嵌入到頁面中的作用,數據窗口具有豐富的顯示風格,用戶比較歡迎瀏覽器上「Powerbuilder Child類數據窗口」的數據表現形式。
Window ActiveX的使用方法與Window plug-ins類似,用來在HTML頁面中嵌入並顯示PowerBuilder中Child 類型的窗口對象。該組件可以和HTML中的VBScripts和JavaScripts交互使用。
單純嵌入HTML文件的方法是流行的編程趨勢, 也就是說根本不用插入件產品,客戶端只需安裝常規的Web瀏覽器,便能實現真正「瘦」的 Browser/Client/Server 結構體系。
總之,Powerbuilder6.0 應用伺服器將業務處理程序的執行結果以HTML格式返回給Web伺服器。Web伺服器再將HTML發布給用戶,客戶瀏覽器端在瀏覽器上接收到結果。
二、簡單的Internet應用實例
1.選用Web伺服器,配置Web.pb程序。Web伺服器種類很多,在此選用Websuit1.1伺服器,其它種類的Web 伺服器類似。Web.pb程序包括pbcgi60.exe、psisa60.dll、pbnsl60.dll、pbns260.dll、webbagent.dll和pbweb.ini等文件。 注意:設置映射目錄/scripts/為c:\ website\ cgi-shl;將上述Web.pb文件復制到/scripts/目錄下;將pbweb.ini文件拷貝到WINDOWS NT或WINDOWS 95 的系統目錄下;在webpb.ini文件中加入以下內容:
[pb60]
driver=winsock
application=10082
location=202.201.208.6
2.在Powerbuilder6.0開發平台上,選取Internet選項,創建 Powerbuilder6. 0 應用伺服器。 技術要點是:建立Internet應用,加入webpb.pbl 類庫文件並作啟動伺服器的腳本,內容是:
transport.mytransport
mytransport=create transport
mytransport="winsock"
my transport.location="202.201.208.6"
//PowerBuilder6.0應用伺服器監聽地址
mytransport.application="10082"
//服務埠號
mytransport.listen()
//啟動監聽服務
return
3、設置業務資料庫伺服器和sybase SQL Anywhere本地庫wedpb.db的連接。其中業務數據存放到資料庫伺服器,例如:SQL6.5、Sybase 11、Informix 6.0、Ingres和DB2等類型的資料庫;本地庫webpb.db中,只存放PowerBuilder 6.0應用伺服器的控制信息。
4、創建用戶對象,並為該用戶對象編寫處理腳本。例如:創建用戶對象ur,並給constructor事件編寫如下腳本:
mytransaction=create transaction
mytransaction.dbms='ODBC"
mytransaction.dbparm="Connectstring='DSN=WebPb'"
Connect using mytransaction;
if mytransaction.sqlcode<>0 then
messagebox("mytransaction.error="+string(mytransaction. &
sql_dbcode),mytransaction.sqlerrtext)
end if
sqlca.dbms="MSS (Msoft) SQL Server 6.5"
sqlca.DataBase="xyw"
sqlca.Userid="sa"
sqlca.ServerName="Server"
sqlca.logid="sa"
Connect using sqlca;
if sqlca.sqlcode<>0 then
messagebox("sqlca.error="+string(sqlca.sql_dbcode),sqlca.sqlerrtext)
end if
給destructor事件編寫如下腳本:
disconnect using mytransaction
disconnect using sqlca
目的是:當Web.pb調用Powerbuilder6.0伺服器時,用戶對象自動先建立與資料庫的連接,調用結束後斷開連接。
5、編寫用戶自定義函數,各種業務工作的數據處理都由該類函數來完成。例如,在用戶對象UR上,創建一查詢功能的函數fp(),其內容是:
string return_html
long ii
datastore data_fp
data_fp=create datastore
data_fp.dataobject="dw_fp"
//dw_fp為已經做好的查詢數據窗口
data_fp.settransobject(mytransaction)
ii=date_fp.retrieve()
//檢索到的記錄數存入變數ii
if ii>=1 then
return_html+=data_fp.object.datawindow.data.htmltable
else
return_html="沒有檢索到滿足條件的數據"
end if
return return_html
6、啟動伺服器,再啟動Powerbuilder6.0應用伺服器; 在客戶瀏覽器端瀏覽含有如下HTML語法的頁面:
<h2>查詢頁面實例</h2>
<A href="/scripts/pbcgi60.exe/pb60/ur/fp?"> 查詢開始</A>
這樣Powerbuilder6.0數據窗口dw_fp的內容就可以通過點擊超文本鏈接「查詢開始」而顯示在客戶瀏覽器界面上,完成一個簡單的「瘦」的browser/server應用。

⑺ PB開發軟體好用嗎有沒有必要學學

我也是學PB的,學了一個月左右就可以進行開發工作了,然後邊學邊作,在三個月左右就完全可以用PB來做軟體開發了.所以說PB是一個極容易上手的資料庫開發工具.
但,容易上手就表示,任何人都可以用PB來做開發,你一點的優勢都沒有!!!就目前各軟體開發公司而言,有招PB程序員的公司不到1%,這個數據是我在投簡歷時總結出來的,不信你去各招聘網站搜下.現在都很後悔學PB了,學了感覺沒有任何價值.
如果能夠學習DELPHI那就更好了.當然了,PB是一個很不錯的開發工具,一個高效的開發工具,作為學慣用,寫樣版軟體還是可以的,用來作實際開發工具的不多,即使有公司在用,那也是比較小的公司,因為這樣的用人成本很低,PB程序員的待遇是非常低的.

⑻ 如何建立 PB 的開發環境

PowerBuilder是最常用的基於Windows操作系統的資料庫前端開發工具之一,它通過不同的驅動程序連接不同的資料庫,再通過
這種連接,實現對數據的管理。而基於Sco Unix的Informix-OnLine資料庫因其具有高性能、高可靠性、支持數據完整性定義和檢查等特性也被廣泛應用。用PB和Informix-OnLine組合構建跨平台集成開發環境可以發揮PowerBuilder和Informix-OnLine各自的優勢,充分利用Windows和Unix操作系統的特點,因此對於軟體開發者和最終用戶來說,是一個不錯的選擇。

下面以在客戶端Windows操作系統上安裝PowerBuilde 8和Informix-Cli,在伺服器端SCO Unix 3.2上安裝Informix-OnLine 7.23,建立口令為ccb的Informix用戶,並以創建資料庫atm為例詳細介紹如何用PB和 Informix-OnLine構建跨平台集成開發環境。

配置Informix-OnLine

Informix-OnLine的配置涉及5個文件:/etc/hosts,
/etc/services, /usr/informix/etc/sqlhosts, /usr/informix/.profile,
/usr/informix/etc/onconfig.atm。

1.修改Unix系統中的TCP/IP連接文件:/etc/hosts和/etc/services。

hosts中存放機器名和IP地址的對應關系,網路上每台使用Informix-OnLine的計算機,都必須在此文件中加入一行,包括IP地址、主機名和主機別名三個域,其中主機別名為可選域,例中加入一台客戶機(hbfcli)和伺服器(atmserver),在hosts中體現為兩行(主機別名域未用):

74.64.44.8 atmserver

74.64.191.170 hbfcli

2.修改/etc/services。

services文件中每一行為一個服務,包括服務名、埠號/協議、別名三個域,其中別名為可選域。服務名和埠號是任意的,但在文件中必須是惟一的,而且在網路上每台使用本Informix-OnLine的計算機上都必須相同。本例中加入如下一行:

sqlexec 6666/tcp

3.修改/usr/informix/etc/sqlhosts。

sqlhosts文件包含你提供的讓客戶應用查找,並連接到網路上任意地方的Informix-OnLine伺服器的信息。該文件必須包含一行(一個登錄項),包括五個域:資料庫伺服器名、網路類型、主機名、服務名和選項域。

資料庫伺服器名(dbservername)和Onconfig文件(本例為onconfig.atm)中的DBServerName或DBServerAliases相同。網路類型域描述在客戶應用和資料庫伺服器之間的介面/協議組合類型,由三個子域共八位組成: 前兩個字母代表資料庫伺服器產品,中間三個字母代表界面介面,最後三個字母代表網路協議(或IPC機制),例如「on」代表資料庫伺服器為OnLine,「tli」代表界面介面為傳輸級介面,「tcp」代表網路協議為TCP/IP協議。當網路協議(或IPC機制)為共享內存(shm)或數據流管道(str)通信時,主機名域必須是實際運行OnLine的計算機主機名。本例中網路協議為TCP/IP, 該域應作為/etc/hosts文件的鍵,給出的計算機網路地址,應與/etc/hosts文件中的主機名域相對應,故本例中應為atmserver。服務名域的解釋取決於網路類型中規定的連接類型,當網路協議(或IPC機制)為共享內存(shm)或數據流管道(str)通信時,OnLine內部使用服務名域的值,此時可使用任何惟一的短字母組。本例中網路協議為TCP/IP, 該域應為/etc/services文件中的服務名域,故本例中應為sqlexec,選項域在指定連接中提供額外的靈活性,本例中未用。

atmpos_a ontlitcp atmserversqlexec

4.修改/usr/informix/.profile。

在.profile文件中,要設置Informix-OnLine伺服器所必需的四個環境參數: InformixDirOnConfig、InformixServer和Path。本例中設置如下:

InformixDir =/usr/informix

OnConfig =onconfig.atm

InformixServe=atmpos

Path =$HOME/bin:$INFORMIXDIR/bin:.

5.修改/usr/Informix/etc/onconfig.atm。

onconfig.atm文件為.profile文件中設置的OnConfig環境參數,onconfig.atm文件中的DBServerName或DBServerAliases必須與sqlhosts文件中的資料庫伺服器名(dbservername)相同。本例中DBServerAliases與sqlhosts文件中的資料庫伺服器名相同,為atmpos_a。

DBSERVERNAME atmpos

DBSERVERALIASES atmpos_a

配置客戶端Informix-Cli

1.修改Windows系統中的TCP/IP連接文件:c:\ windows\ hosts和c:\ windows\ services。Windows 2000中這兩個文件在c:\ WINNT\ system32\ drivers\ etc目錄下。這兩個連接文件的作用、使用方法及內容分別與伺服器端的/etc/hosts和/etc/services相同。

在c:\ windows\ hosts中加入如下兩行:

74.64.44.8 atmserver

74.64.191.170 hbfcli

在c:\ windows\ services中加入如下一行:

sqlexec 6666/tcp

2. 選「開始→程序→informix-cli32→Informix SetNet32」中的ServerInformation項,各文本框參數對應如下:

InformixServer atmpos

HostName atmserver

Protocalname onsoctcp

ServiceName sqlexec

InformixServer與 onconfig.atm文件中的DBServerName或DBServerAliases一致。HostName與「c:\ windows\ hosts」文件中的伺服器(atmserver)一行對應,也可直接使用IP地址74.64.44.8。ServiceName與「c:\ windows\ services」中加入的服務相同。各參數全部輸入完畢後按「Make Default Server」按鈕。

3.選「開始→程序→informix-cli32→Informix SetNet32」中的HostInformation項,各文本框參數對應如下:

CurrentHost atmserver

UserName informix

PasswdOption passwd

Passwd ccb

CurrentHost自動獲取 ServerInformation項中InformixServer的值。UserName為在伺服器端能使用Informix-OnLine資料庫的用戶。PasswdOption用下拉框選擇需要口令。Passwd輸入伺服器端informix用戶的口令。

3. 選擇「開始→程序→informix-cli32→Iogin32Demo」的File菜單中的Run菜單項, 改StoreDatabase文本框內容為atm後按「確定」。若出現「Customer Records Found」對話框,且未報錯,則客戶端的Informix-Cli和伺服器端的Informix-OnLine連接成功。

配置PowerBuilder

下面完成客戶端PowerBuilder的配置工作。

1. 配置ODBC數據源。

Informix資料庫既可以通過ODBC連接,也可以通過專用介面連接,本文介紹ODBC連接方式。

打開Windows控制面板,雙擊「ODBC數據源」,在「ODBC數據源管理器」對話框中創建用戶DSN。單擊「添加」按鈕,打開「創建數據源」對話框。選擇驅動程序Informix-CLI2.5(32 bits),再通過向導打開「ODBC INFORMIX7.2 Driver Setup」對話框,輸入「數據源名」為atmdsn,「資料庫名」為atm。

2. 創建資料庫描述文件。

在PowerBuilde 8中,通過ODBC連接到資料庫需要經過兩個步驟: 創建數據源和創建資料庫描述文件。

在創建資料庫後,啟動PowerBuilde 8後,單擊「DBProf」按鈕,打開「Database Profiles」對話框,單擊「ODB ODBC」圖標,然後單擊「New」按鈕,打開「Database Profile Setup-ODBC」對話框。在「Connection」選項卡的「Profile Name」文本框中輸入資料庫描述文件的名字為atmpro,在數據源下拉列表框中選上一步創建的數據源atmdsn,在「User ID」和「Password」文本框中分別輸入連接資料庫時的用戶標識Informix和密碼ccb。

然後單擊「Preview」選項卡,就可以預覽所創建的資料庫描述文件,即按照資料庫描述文件的語法格式顯示通過這些對話框的各個選項卡所設置的相關參數。單擊其中的「Test Connection」按鈕可測試所建立的連接。單擊其中的「Copy」按鈕可將其中的資料庫描述文件復制到剪切板上。若復制到應用中,並加上connect語句,就可實現以程序方式與資料庫連接。

資料庫描述文件創建完成後,在「Database Profile」對話框中,選擇「ODB ODBC」文件夾下新創建的資料庫描述文件atmpro,然後單擊「Connect」按鈕,即可連接到伺服器端Unix平台的Informix-Online資料庫伺服器的資料庫atm上。

⑼ pb是什麼軟體

上學期剛學習了這門課程,這學期還在課程設計中,也是用的PB
大概給你說一下,滿意請給分——

全稱PowerBuilder。
是開發MIS系統和各類資料庫跨平台的首選,使用簡單,容易學習,容易掌握,在代碼執行效率上也有相當出色的表現。
屬於面向對象的資料庫開發工具。
運行時,電腦上需要安裝以下軟體:
Windows操作系統、PowerDesigner、PowerBuilder10.0、SQL Anywhere 9.0等軟體。

PowerBuilder是著名的資料庫應用開發工具生產廠商Sybase Inc.的子公司PowerSoft於 1991年6月推出的資料庫應用開發工具 .

PowerBuilder除了能夠設計傳統的高性能、基於客戶/伺服器(Client/Server)體系結構的應用系統外,也能夠方便地構建和實現分布式系統,還可以開發基於Internet的應用系統。

PowerBuilder採用了面向對象和可視化技術,提供可視化的應用開發環境,使得我們利用PowerBuilder,可以方便快捷地開發出利用後台伺服器中的數據和資料庫管理系統的資料庫應用程序。

用PowerBuilder不僅能夠開發客戶端應用程序,而且還可以輕而易舉地構造應用伺服器,從而形成分布式應用。PowerBuilder支持多種平台,並能生成機器代碼的可執行文件。

PowerBuilder已經開始從傳統的客戶/伺服器開發環境轉變成完全支持World Wide Web應用的開發環境。在當前,互聯網路技術迅速發展,隨之發展的還有OLE,OCX,跨平台等技術,在PowerBuilder中提供了對這些技術的全面支持。

⑽ 在PB中如何用OLE DB來連接資料庫

幾個與PB連接資料庫相關的問題

1.Power script 語言里的事務處理對象怎麼理解

PowerBuilder程序與資料庫之間傳遞信息的一個結構變數,共有15個成員.你可以詳細列表它的所有成員看看它的組成.PB的應用程序會初始化一個全局的結構體變數,SQLCA,當然你也可以自定義一個自己的事務對象.

1 DBMS string 所使用的資料庫管理系統的名字,如Sybase,Oracle,ODBC。
2 Database string 要連接的資料庫名字。
3 UserID string 連接資料庫所用的用戶名。有的DBMS不需要此項。
4 DBPass string 用戶連接資料庫的口令。
5 Lock string 這是資料庫的保護級別,一般不必給出。
6 LogID string 登錄到資料庫伺服器上的用戶名,有的DBMS不需要此項,但Sybase和Oracle需要指定這個參數。
7 LogPass string 登錄到資料庫伺服器上的用戶口令。這個屬性可設可不設,但Sybase和Oracle需要指定口令。
8 ServerName string 資料庫伺服器名。
9 AutoCommit boolean 指定是否將資料庫設置成自動提交所有事務。默認是False,也就是說,必須在應用程序中進行事務管理,並在適當的時候對資料庫提交事務。如果選擇True,則每個事務都由系統自動提交。
10 DBParm string 用於向資料庫傳遞特殊信息的屬性。
11 SQLCode long 指示最近一次SQL操作失敗或成功。它的取值為: 返回結果 0 無錯誤。 -1 出現一個錯誤。 100 沒有檢索到數據。
12 SQLNRows long 最近一次SQL操作影響的行數,資料庫不同其含義也不同。
13 SQLDBCode long 資料庫錯誤代碼。不同的資料庫的含義不同。
14 SQLErrText string 相應於SQLDBCode屬性中錯誤碼的文字說明。
15 SQLReturnData string 返回DBMS執行SQL的附加信息,不同的DBMS其值不同。

2.我常見到做好的PB程序使用.ini文件來控制與資料庫連接,可以方便的進行應用程序移植只需修改其中與資料庫連接參數即可,我想問這些.ini文件只能使用手工編寫嗎,我見到很多.ini文件參數極多不象手寫好象是機器生成的,不知道如何生成啊?請大家指教

1、其實PB中在新建---點TOOL----FILE EDIT 可以生成(編輯)INI文件。最直接就是工具欄中的EDIT圖標。
2、機器生成代碼是:點DATABASE圖標-----選擇連接方式。如:選 MSS MICROSOFT SQL SERVER 右鍵-NEW PROFILE 按要求填定一些參數後在--PREVIEW中可以看到代碼,把它復制到INI文件中就行了。

3.編程經驗--PB資料庫連接

作者:郭洪建 無法確定網上來源,如有準確首發,請與本站聯系

通過這些年的信息系統開發經驗,使我對POWERBUILDER的理解更進一步,最近在開發某子系統模塊時,遇到了一個奇怪的問題,這里給大家介紹一下.

通常在使用PB和資料庫管理系統(DBMS)連接時,使用兩種方式:
一、開放數據源介面(ODBC)連接

ODBC是通過支持美國微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中的一部分.在PB 中通過配置 SQLCA.DBMS=『ODBC』對象的屬性可使應用程序通過ODBC連接到資料庫。
ODBC的具體配置包含了數據源、驅動程序類型、緩沖池等各種細節參數。
例子:
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm="C,C"
PWD="',C"

二、專用資料庫介面

每個資料庫管理系統(DBMS)均提供相應的客戶端驅動,為了更好的服務於資料庫。
在這里我們使用的是Microsoft sqlserver 2000 的客戶端程序。通過設置 SQLCA.DBMS ="MSS Microsoft SQL Server" 使客戶端通過專用資料庫介面連接到資料庫。
該類介面的參數配置除了伺服器名、資料庫名、LogId、LogPass外還包含了連接協議等用戶驗證方式等,可通過伺服器端或客戶端的配置程序進行配置。
SQLCA.dbms= "MSS Microsoft SQL Server" //介面類型
SQLCA.database= "master" //資料庫
SQLCA.userid= ""
SQLCA.dbpass= ""
SQLCA.logid= "sa"
SQLCA.logpass= "xxxx"
SQLCA.serverName= ".\xxx"//伺服器名
SQLCA.dbparm= "Commit"
SQLCA.autocommit= false
以上介紹的是PB與資料庫連接時常用的方法。

往往根據不同的應用環境選擇連接方式, 在單機環境下多採用的是ODBC連接,因為在發行環節上相對要容易些。在網路環境下多採用專用資料庫連接,這樣可以提高系統的可靠性與執行效率。專用資料庫的發行環節往往要配上相應DBMS客戶端的動態連接庫(DLL),並把它.
PB與ASA資料庫連接問題!

一.連接步驟
1.添加數據源。WINDOWS98中----我的電腦---控制面版----ODBC數據源32位-----系統DSN---添加---選擇你使用的資料庫
2.在工具條上點擊DB PROFILE 選擇已建立好的資料庫連接,單擊EDIT在彈出的對話框中選PREVIEW裡面就是連接資料庫的語句,COPY就OK了。
二.DB_profile寫法(以lin.com的tax常式為例)
http://down.laozang.com/lin/code/tax.zip

tax.ini
[Database]
DBMS=ODBC
Database=test
DbParm=c
三.打包所需文件
參看以下文章:
http://www.laozang.com/pbbbs/htm_data/12/0505/233.html

四.容易出現的問題及解決方法
導致ASA資料庫無法連接的問題有以下幾種:
1、ODBC配置錯誤。沒有配置數據源,資料庫的用戶名或口令錯誤等都會導致資料庫無法連接。
解決的辦法:檢查數據源的配置,如果沒有在ODBC中配置數據源則按照向導添加數據源即可;口令錯誤只需改為正確的即可。
2、連接時提示LOG文件錯誤。這樣的問題大多出現在重裝系統後、源碼移植到其他系統、資料庫文件路徑改變之後。
解決的辦法:在創建ASA資料庫的時候不創建LOG文件,如果已經創建了LOG文件則可以利用PB自帶的工具Sybase central來去掉LOG文件和資料庫文件的關聯。操作步驟如下:
a)啟動Sybase central在左邊的樹型目錄中選擇Utilities;
b)雙擊右邊出現的條目中的change log file settings,直接next;
c)點Browse選擇需要去除log文件的資料庫文件,選好後next;
d)這里你會看到一些資料庫的信息,log文件名,文件大小等。next;
e)去掉Maintin the following transaction log file前面的對勾,Finish;
f)配置ODBC連接資料庫就可以了。
3、資料庫文件損壞。此類錯誤一般不常見,可能由於病毒破壞或誤操作引起。
解決的辦法:如果以前有備份用備份文件覆蓋原文件即可,如果沒有備份文件就只能重新建庫了!

PB8如何使用OLE DB練到ASA資料庫
(本文來自sybase網站 翻譯 by 金色年華)
原文出處:
http://www.sybase.com.cn/cn/content/support/exp_jszc_pb_dbms_00017.htm

Connecting to ASA Server (7.01 GA) via OLE DB in PowerBuilder 8
Adaptive Server Anywhere includes an OLE DB provider named ASAProv. One of the features of ASAProv (dboledb7.dll) is that you do not have to deploy ODBC. In other words, you can connect to an ASA database either via OLE DB or via OLE DB/ODBC bridge.

在pb中通過OLE DB連接到ASA資料庫的步驟如下:

在命令提示符下鍵入如下命令,啟動 ASADEMO:
dbsrv7 asademo -x tcpip -n asademo

("asademo" - 你選擇運行的資料庫. 確定你沒有正在運行一個同名的資料庫,否則會出錯)

有兩個方法通過 OLE DB 連接到 ASA Server:

1) OLE DB/ODBC bridge
對於這種連接,你必須在資料庫參數中,指定有效的 ODBC 數據源,連接的腳本如下:
// Profile asa_oledb
SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = "sql"
SQLCA.LogId = "dba"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='ASAProv',DATASOURCE='asa'"

2) OLE DB (不需要配置 ODBC)
你可以通過一個擴展名為.udl的單獨的文件,提供連接信息,在OLE DB中訪問數據.這個文件與 Microsoft DataLink (.udl) file 類似. 你必須在系統中安裝 Datalink API 以便於創建和使用 .udl 文件.

創建 .udl文件的方法:
在當前目錄里的空白處單擊滑鼠右鍵,選擇新建文件,選擇 Microsoft Data Link.如果沒有創建 Microsoft Data Link 的選項,需要創建一個文本文件,然後更改擴展名為 .udl.雙擊這個文件,添加連接信息.詳情請訪問msdn.microsoft.com 搜索 Data Link(此處原文有亂碼,具體內容不詳).
【討論】pb連接MS SQL Server問題!

一.連接步驟
1)伺服器安裝SQL Server並啟動,創建資料庫。
2)客戶機安裝SQL Server客戶端。
3)啟動PB,配置數據源描述(通過直連介面,不建議用ODBC)。
4)連接。
二.DB_profile的寫法

在ini文件里設置
[Database]
DBMS=MSS Microsoft SQL Server 6.x
Database=databasename
UserId=
LogID=
DatabasePassword=
LogPass=
ServerName=
AutoCommit=False
在程序里用profilestring讀取

附加資料:ms sql server 配置文件設置
ms sql server 配置文件設置:
dbms="mss"//只須在*.ini文件中用這個代碼便告訴pb使用的ms sql server
Database:所用資料庫
LogId:sql server的登陸賬號
LogPass=口令
servername:允許資料庫伺服器連接的計算機名
autocommit:控制pb 是工作在事務處理范圍內還是工作在事務處理范圍外
dbparm:dbms的專用連接參數
以下參數:
language:在顯示錯誤消息和日期格式時指定要使用的語言,在伺服器上必須設置該直.
lock:事務處理隔離層
log:文本和圖像數據的更新是否應該紀錄到事務日誌中.
systemprocs:系統存儲過程和用戶定義的存儲過程是否顯示在各種各樣的pb畫板中.
pbcatalogowner:pb存儲中表的預設者.
async:允許在伺服器上進行同步操作.0:同步,1:非同步
dbgettime:當async=1時,使用該參數設置用戶在檢索行時pb等待來自pb的響應的秒數.
cursorlock:release和cursorscroll參數一起使用可設置游標的鎖定選項.lock,opt,optval,readonly
cursorscroll:設置游標的滾動選項.
staticbind:控制pb是否在檢索數據前獲取dbms中的結果集描述.
dbtextlimit:控制返回的文本欄位的最大長度而不用將文本作為二進制大型數據對象來處理.
appname:設置連接時所使用的應用程序名.
host:設置連接似的工作站名.
packetsize:設置使伺服器向pb傳送數據時所設置的包大小.
secure:設置是否想使用winnt集成邏輯安全性和安全sql server連接 預設0使用標准安全性,1集成安全性.
PowerBuilder與Oracle的連接

PowerBuilder(PB)和Oracle分別是前端開發工具和RDBMS的主流產品。PB提供了兩種與Oracle連接的介面:PowerSoft內置的資料庫介面(Native Database Interface)和ODBC介面。本文介紹使用PB6.0內置Oracle介面的方法,包括數據描述文件的設置、存儲過程的調用和存儲過程作為數據窗口數據源的操作方法等內容,使用的RDBMS的Oracle 7.3。

PowerBuilder與Oracle的連接

假定已安裝Oracle客戶端應用程序。可用Sqlplus或Tnsping等是否能連接到Oracle資料庫,確定在SQLNET配置文件中使用的資料庫別名(Database Alias,又稱伺服器名,Server Name)。如有疑問,可在Oracle客戶端程序目錄下tnsname.ora文件中找到。另外保證搜索路徑已包括SQLNET應用程序的安裝目錄(如C:\ORAWIN95\BIN)。

進入PB的Database Profiles畫筆,可看到所有已安裝的資料庫介面(PB6.0預設安裝的是Oracle 7.3版的介面,如使用低版本的Oracle,需在安裝時指定),選擇「O73 Oracle 7.3」,點擊「New」按鈕,進入Database Profile Setup對話框。在「Connection」頁輸入下列信息:

Profile Name:為該Database Profile起一個有意義的名稱;

Server:TNS:ServerName,其中ServerName為上述資料庫別名(伺服器名),如@TNS:ORA73;

Login ID:Oracle資料庫中實際的用戶名,由於PB初次連接到資料庫時要自動建立五個系統表(PowerBuilder Catalog Table;SCATTBL,PBCATCOL,PBCATEDT,PBCATFMT,PBCATVLD,存儲表的擴展屬性),因此第一個連接到Oracle的用戶必須具有建表、給PUBLIC角色授權等許可權。例如可用SYSTEM用戶進行第一次連接,此後的連接對用戶則無特殊要求;

Password:該用戶的口令。

設置上述內容後,即可連上Oracle。為優化資料庫連接,還可設置下列選項:

Prompt for Database Information:連接時是否提示用戶輸入用戶名和口令;

Generate Trace:啟動DB跟蹤工具,跟蹤連接;

Thread Safe:開發需要多線程環境支持的分布式應用時,選擇該項。預設為未選,適用於非分布應用;

PBDBMS:與存儲過程調用方式有關的參數。Oracle為7.2或更高版本時,清除該選項,此時帶IN OUT參數的存儲過程可作為數據窗口數據源。7.2版本以下,選擇該項,調用PBDBMS.Put-Line建立存儲過程的SQL語句,預設是選中;

Commit on Disconnect:斷開連接時,指定提交或回退未提交的事務;

Case Sensitive:連接的Oracle伺服器是否區分大小寫。注意該項選中時,所有主鍵、包含主鍵的表名、外鍵須全為大寫字元。

PowerBuilder Catalog Tables Owner:指定擁有PB系統表的用戶,預設為「SYSTEM」。如果要使用多種顯示格式或有效性規則,可以在不同的用戶下建立幾套系統表;

Table Criteria:指定滿足哪些條件的表、視圖和同義詞可在「Select Tables」對話框中顯示出來。例如DEV用戶下銷售子系統的表都以SALE開頭,則可以用SALE%、DEV、「TABLE」、「VIEW」指定只顯示DEV用戶以SALE開頭的表和視圖;

Asynchronous:選擇該項,可在一個復雜的SQL語句執行過程中,返回第一行結果前,切換到其他操作;

Number of Seconds to Wait:若上一項選中,還可進一步通過該項指定檢索數據時,等待資料庫響應的時間;

Retrieve Blocking Factor:決定數據窗口對象一次可從資料庫取出的記錄數;

Number of SQL Staments Cached:PB可將數據窗口對象產生的SQL語句和嵌入式SQL語句保存在SQL語句緩沖區,該參數指定緩沖區為PB保留的SQL語句數目。該數值可由下式計算:SQLCache=伺服器OPEN—CURSORS數-5(保留的游標數)-本連接預期使用的最大游標數;

Disable Bind:指定是否將輸入變數與SQL語句綁定,此參數影響PB為數據窗口對象生成INSERT語句的方式;

Static Bind:數據窗口對象檢索數據前是否檢測SELECT語句的合法性;

在Syntax頁,還可指定日期、時間的格式等。在Preview頁可查看Database Profile設置對應的PowerScript寫法。

Oracle存儲過程的使用

歸納起來PB6.0中調用Oracle存儲過程有以下四種方法。

方法一:以關鍵字RPCFUNC聲明存儲過程;

方法二:以DECLARE PROCEDURE語句聲明存儲過程;

方法三:以動態SQL語句實現;

方法四:調用函數PBDBMS.Put-Line。

一般情況下,方法一能得到較好的運行效率和更完善的功能。因此推薦使用方法一。但是某些類型的存儲過程只能使用其他方法。以下重點介紹方法一和方法二。

兩種方法比較起來,有以下幾點主要區別:

1)方法一適用於具有IN、OUT和IN OUT參數的存儲過程,而方法二僅支持IN
PB10連接SQL Server的配置

可能初次使用pb10的朋友無法順利連接到sql server,一方面沒有了mssql server專用介面了,另一方面資料庫管理系統(DBMS)換成了「OLE DB」,配置起來有點不順手!下面就來介紹pb10中用OLE DB連接sql 2000資料庫。

在安裝pb10的時候選擇custom/full方式安裝(默認的安裝方式不會安裝ole db介面),next-》如果你沒有安裝.net則不要選擇列表中的ADO.net....項。一路next完成安裝。

在資料庫畫板中找到OLE microsoft OLE DB項,在其上右鍵新建一個配置,在彈出的配置窗口中:

profile name:填寫配置文件名 //任意即可

provider:選擇資料庫管理系統類型,這里選擇「SQLOLEDB」項

data source:伺服器名(和之前的版本不太一樣)。可以在下拉列表中選擇,也可以填入伺服器名或IP地址如:127.0.0.1等。如果上面的provider不是「SQLOLEDB」則此下拉列表中可能沒有選項。

user ID:用戶名。我的用戶名是默認的sa

password:對應上面user ID的密碼,我的密碼是空的,所以不填。

到這里你就可以順利的連接到sql server了。但是連接到哪個資料庫呢?上面的參數都沒有指明,我也找了半天。不要著急,在Extended里填入 「database=資料庫名」 就可以了。(不要引號)

最後的配置文件內容為:

// Profile his
SQLCA.DBMS = "OLE DB"
SQLCA.LogId = "sa" //我的用戶名是sa
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='NETMANAGER',PROVIDERSTRING='database=zs'" //我的資料庫名是:zs;datasource後面也可以是IP地址:DATASOURCE='127.0.0.1'

至此就完成了pb10下用OLE DB連接sql server的配置!

在PB中使用FoxPro資料庫的方法

重慶工業管理學院 蔣波

---- Power Builder 是十分優秀的用於客戶/伺服器環境信息管理系統開發工具,其優秀之處不僅是因為可以開發基於客戶/伺服器模式的系統,而且簡單、易學,Power Builder 自身是沒有資料庫管理系統(DBMS)的,它是首先通過不同的驅動程序聯接不同的資料庫,再通過這種聯接,實現對數據的管理。Power Builder同時隨盤附帶有一個小型的資料庫管理系統:SQL Anywhere,所以用戶也可以直接開發用於單機的完整的信息管理系統。

---- 本人以前曾開發過基於FoxPro環境下的資料庫系統,但FoxPro的編程太麻煩,不但要處理數據的管理,而且還要花大量的精力處理輸入、輸出的格式等。但有著可視化編程環境的Power Builder卻不同,處理輸入、輸出是件相當簡單的事情,於是,本人償試用Power Builder來管理以前的資料庫。 c在Power Builder系統中,使用FoxPro的資料庫有兩種方法:一是利用ODBC聯接FoxPro資料庫;另一種方法是將FoxPro的資料庫轉換到SQL Anywhere的數據格式。

---- 一、 利用ODBC聯接FoxPro資料庫

---- 在Power Builder中,直接訪問FoxPro資料庫只能通過ODBC方式。

---- 在開發環境下,可以直接在PowerBar畫板上配置ODBC,聯接FoxPro資料庫,方法如下:

單擊Configure ODBC工具鈕

在Installed Drivers目錄框中選擇:Microsoft Foxpro Driver (*.dbf)

單擊「Create」按鈕

命名數據源名、選擇版本

取消「使用當前工作目錄」選項

單擊選定目錄,選擇被聯接資料庫所在的目錄

確定退出

---- 通過ODBC方式聯接的FoxPro的資料庫,一定要滿足FoxPro的資料庫格式,即資料庫文件結構必須是:「32位元組文件描述若干個32位元組的欄位描述 結構描述結束符(0D) 記錄1,記錄2,…… 文件結束符(1A)」。由此看來,傳統的DBF資料庫文件均可通過該方式聯接。對於Visual FoxPro環境下建立的表(Table),其結構與傳統的資料庫結構是不同的,它在欄位描述結束符(0D)與記錄之間加上了二百多個位元組的內容,但在未納入VFP的資料庫(Dbc)之前,其內容為「00」,此時仍可以通過這種方式聯接,一旦納入資料庫中,該段位元組已被填上了其它內容,無法再聯接。

---- 在Power Builder應用程序中,使用事務處理對象來聯接資料庫,這種事務處理對象,即有默認的SQLCA,用戶也可以自己生成,以方便訪問多個資料庫。在程序中使用事務處理對象時,一般必須先指明DBMS、DbParm兩個屬性,對於FoxPro資料庫,還必須指明 Database、 userid、servername、幾個屬性,這一點是與訪問其他類型的資料庫不同的地方。

sqlca.dbms="ODBC" // 指定聯接方式ODBC
sqlca.database="D:\prg\pubdata" // 指定被聯接資料庫所在目錄
sqlca.userid="public" // 用戶識別號,都為 public
sqlca.servername="FOXPRO" // 伺服器名:均為FOXPRO
sqlca.dbparm="C" //數據源名

connect using sqlca; // 實施聯接
……

---- 通過對FoxPro資料庫的聯接,用戶便可以在Power Builder開發環境下、應用程序中使用這些資料庫,快速地開發出自己的信息管理系統,實現對這些資料庫的維護與管理。

---- 二、 將DBF文件轉換為SQL Anywhere 的DB文件格式

---- 在Power Builder環境下,附帶有一個資料庫系統——SQL Anywhere,在Power Builder中利用它,用戶可以直接建立、維護資料庫。在SQL Anywhere中,資料庫結構雖然與VFP不同,但概念是一致的,即:資料庫是系統中相關的各種數據,這些數據又因不同用途組織成不同的表,這些表共同構成資料庫,與傳統的資料庫(DBF)相類比,PB、VFP中的表即是傳統意義的資料庫,PB、VFP中的資料庫類似於傳統的資料庫(DBF)文件所在的目錄。SQL Anywhere中提供了將傳統的DBF文件轉換為該系統下的資料庫文件(DB)中的表的工具。為了實現這一轉換,用戶必須先建立一個新的表,再將DBF格式的文件內容導入該表中。

---- 對於DBF文件,必須是傳統意義上的資料庫,如FoxPro、dBase、FoxBASE環境下的資料庫文件。該種資料庫文件嚴格遵循「數據文件==資料庫結構+資料庫記錄」這一格式。其結構如下:「32位元組文件描述若干個32位元組的欄位描述 結構描述結束符(0D) 記錄1,記錄2,…… 文件結束符(1A)」

03 62 0A 07 02 00 00 00 - 81 00 4C
00 00 00 00 00 // 文件描述:時間、長
00 00 00 00 00 00 00 00 - 00 00 00
00 00 00 00 00 度、記錄長、記錄數
4E 41 4D 45 00 00 00 00 - 00 00 00
43 01 00 00 00 // 第一個欄位:名、類
28 00 00 00 00 00 00 00 - 00 00 00<

閱讀全文

與pb環境下分布式應用程序的開發相關的資料

熱點內容
s3c2440外部中斷代碼 瀏覽:491
許君聰二龍湖浩哥的電影 瀏覽:510
騎士助手文件夾的名字 瀏覽:825
風雲雄霸天下小說全集txt下載 瀏覽:532
審計大數據情況 瀏覽:862
隨著網路技術迅猛發展對 瀏覽:737
韓國十大神級電影網站 瀏覽:878
平板電腦虛擬按鍵配置文件 瀏覽:374
歐美動作愛情 瀏覽:915
word2013更改圖片 瀏覽:980
win10plsql 瀏覽:819
香港電影開頭一個女的在床上自慰 瀏覽:512
win10cdromsys下載 瀏覽:30
桌面程序hibernate 瀏覽:14
如何建蔬菜網站 瀏覽:579
android網路通信聊天 瀏覽:1
電影頭上裹著布還有紐扣 瀏覽:246
iphone6nfc充電 瀏覽:422
鐵銹戰爭的文件夾是哪個 瀏覽:184
大數據業務描述 瀏覽:162

友情鏈接