【數據庫部分】數據庫的表結構方面沒有特殊要求。
所有操作都必須做成存儲過程供應用程序來調用。
每個存儲過程的首參數是一個輸出的int,名為ret。其他參數排布在其后。
存儲過程中所有操作使用事務包裹起來,并設置異常處理。處理方式是rollback,并設置ret為約定的缺省錯誤碼(實際使用時設置為-1)
存儲過程向應用程序返回數據時,用“select 行標識,其他字段”的方式。其中,行標識的作用是指定該條數據的類型。這個類似網絡通信封包的命令號的概念。
ret為OK(實際使用時值為0)表示存儲過程無錯執行。其他值表示有錯誤。
存儲過程要返回錯誤時,設置ret為要返回的錯誤號碼,并rollback,然后leave最高層begin,end。
【應用程序部分】
調用存儲過程時,使用統一的接口,調用參數打成一個包(實際使用時采用網絡封包相同的容器)。
返回的數據行,通過行首的“行標識”字段來識別其數據含義。
當返回的ret不是OK值(0)時,則不處理返回的任何數據行。
【優化】
建立數據庫連接池。
在線程池中進行存儲過程的調用。并對返回數據進行打包(vector)
在邏輯線程中進行數據的處理。
使用協程技術,將異步的數據庫操作變成同步的執行順序。
【通用性和擴展性】
調用時使用的是封包容器,所以整個應用程序(一般為服務器應用)數據容器都非常統一,而且接口也可以做成非常一致。簡單的說就是像發網絡封包一樣調數據庫。
返回的數據,都是帶“命令號”的,可以用處理網絡封包的方式去處理。在服務器應用中,也是能夠和各種服務邏輯統一在一起。
要擴展數據庫操作,只要寫存儲過程,并處理新增的數據命令號即可,減少了很多重復的工作,提高了數據庫相關邏輯的開發速度。