Super SQL Server Systems: Turbocharge Database Performance with C++ External Procedures
暫譯: 超級 SQL Server 系統:使用 C++ 外部程序提升資料庫效能

Joseph Gama, Patrick Naughter, Donald Burleson

買這商品的人也買了...

相關主題

商品描述

Description

This unique book focuses on hypercharging SQL Server database performance with external procedures.

SQL Server runs databases for financial, bank, biotech, Ecommerce, data warehousing, scientific applications, etc. which often require huge data processing with complex formulas or algorithms.

Most of this work is done with TSQL stored procedures and .NET procedures (in SQL Server 2005), however neither one of them can achieve the performance and flexibility of external procedures which are natively compiled code. External procedures are analogous to stored procedures but with the power of C++ for CPU intensive algorithms, hardware/low level access, use of external libraries, etc.

Database administrators/developers can create more efficient code and avoid expensive, slow and unreliable third party tools. There is also the extra bonus of having the source compiled, to protect the intellectual property.

This book is intended for C++ programmers who want to learn about database programming and use their C++ skills seamlessly, and database administrators and/or programmers who need more performance, functionality and versatility than they can achieve with TSQL, .NET procedures or ADO.

 

Table of Contents

1. Introduction to Extended Stored Procedures
What is an XP - "extended stored procedure"?
Why use XP's?
How to create XP's?
How to use XP's?
How to call XP's?
About the compilers/languages used to create XP’s
Can VB create XP's
SQL Server 2005 and extended stored procedures
ODS API
How to install the ODS code samples, libraries and headers
Registering an XP from Enterprise Manager
Using Query Analyzer
Execution of Extended Stored Procedures
XP Samples
Parameter handling
Data Types

2. Misc compilers and languages
Microsoft Visual C++ - WIN32 DLL xp_hellovcdll
Microsoft Visual C++ - WIN32 MFC DLL xp_hellomfc
CodeWarrior xp_hellocw
Borland C++ xp_hellobcc
Dev-C++ xp_hellodevc
MINGW xp_hellomw
Intel C++ Compiler
Digital Mars
Notes about compilation
Microsoft Platform SDK
Debugging an XP
Execution errors

3. A C++ Class Framework for XP's (XP++)
Exporting the function
Support for __GetXpVersion
Implement encapsulation by using C++ classes
Automatically link to the correct ODS import library
Encapsulate verification and setup of parameters.
Provide automatic conversion of parameter data types
Encapsulate the SDK calls provided by ODS
Reduce the number of parameters required by ODS
Track Memory Leaks
Using the framework
Other Examples
Summary

4. Network Messaging (XP_NETSEND)
Implementation
XP_NET_ADDNAME
XP_NET_DELNAME
XP_NET_SEND
Testing the Code
Applications of XP_NETSEND
Summary

5. SMTP Mailing (XP_SMTPSENDMAIL)
Choice of Mail Library
Using CDO for Windows 2000
Implementation Details
Code Highlights
Applications of XP_SMTPSENDMAIL
Summary

6. NT Event Log (XP_NTLOG)
Implementation
XP_NTLOG_INSTALL
XP_NTLOG_UNINSTALL
XP_NTLOG_ERROR, XP_NTLOG_WARNING & XP_NTLOG_INFORMATIONAL
Testing the Code
Applications of XP_NTLOG
Summary

7. Disk Logging (XP_DISKLOG)
Implementation
Testing the Code
Summary

8. Audio Notification (XP_NOTIFY)
Initial Implementation
XP_SIMPLE_MESSAGEBEEP, XP_ICONASTERISK_MESSAGEBEEP, XP_ICONEXCLAMATION_MESSAGEBEEP, XP_ICONHAND_MESSAGEBEEP, XP_ICONQUESTION_MESSAGEBEEP and XP_OK_MESSAGEBEEP
XP_BEEP
XP_PLAYSOUNDFILE and XP_STOPSOUND
XP_PLAYSOUNDALIAS
XP_PLAYSOUNDMEMORY
Testing the Code
Applications of XP_NOTIFY
Summary

9. Encoding HTML special characters (XP_HTMLENCODE)
Implementation
Testing the Code
Applications of XP_HTMLENCODE
XP_HTMLENCODE2
Summary

10. Cryptography (XP_CRYPTOAPI)
Hashing
Symmetric Encryption / Decryption
Hash Message Authentication Code
Asymmetric Encryption / Decryption
Message Signing / Verification
Public Key Management
XP_CRYPTOAPI Usage
Applications of XP_CRYPTOAPI
Summary

11. Random Data (XP_RAND)
Implementation
Testing the Code
Applications of XP_RAND
Summary

12. INI File Manipulation (XP_INI)
Implementation
XP_INI_WRITESTRING
XP_INI_WRITEINTEGER
XP_INI_READSTRING
XP_INI_READINTEGER
XP_INI_GETSECTIONS
XP_INI_READSECTION
XP_INI_DELETESECTION
XP_INI_DELETEKEY
XP_INI_GETKEYS
XP_INI_WRITE
XP_INI_READ
Testing the Code
Summary

13. Retrieving free disk space (XP_DISKSPACE)
Implementation
Testing the Code
Summary

14. Retrieving CPU usage (XP_CPUUSAGE)
Implementation
Testing the Code
Applications of XP_CPUUSAGE
Summary

15. Raw sockets sample (XP_RAWIP)
Implementation
Testing the Code
Summary

16. Geographical Information Systems (XP_GIS)
Introduction
The Shape of the Earth
Datums
Coordinate Systems and UTM
Implementation
XP_GIS_ELLIPSOIDINFO
XP_GIS_DATUMINFO
XP_GIS_DATUMTRANSFORM
XP_GIS_LL2UTM
XP_GIS_UTM2LL
XP_GIS_DISTANCE_BETWEEN
Testing the Code
Summary

17. Regular Expressions (XP_REGEXP)
Implementation
Testing the Code
Applications for XP_REGEXP
Summary

18. A Multiple Use XP (XP_SERVERREACHABLE)
Initial Creation
Adding COM / Win32 DLL Support
Adding XP Support
Testing the Code (XP Support)
Testing the Code (Win32 DLL Support)
Testing the Code (COM Support)
Summary

19. Computational Astronomy (XP_ASTRO)
Implementation
XP_ASTRO_DATE2JULIAN & XP_ASTROJULIAN2DATE
XP_ASTRO_DELTAT
XP_ASTRO_SPRING_EQUINOX, XP_ASTRO_SUMMER_SOLSTICE, XP_ASTRO_AUTUMN_EQUINOX & XP_ASTRO_WINTER_SOLSTICE
XP_ASTRO_MOONPHASEK & XP_ASTRO_MOONPHASE
Testing the Code
Summary

20. IP Configuration (XP_IPConfig)
IPConfig
IPConfig Syntax
Implementation
IP Helper
Testing the Code
Summary

21. Beyond C/C++ (XP_RUNSCRIPT)
Why the Need?
sp_OACreate, sp_OAMethod etc
The Solution
The Object Model
Initial Creation
The XPServer Object
The XPParameters Object
The XPParameter Objects
Adding XP and Active Scripting Support
Extending to support Visual Basic etc
Testing the Code
Summary

22. Protecting Intellectual Property with XP's
Prior Art
The valuable disclaimer
Technical protections
Stored procedures can be decrypted
Market for 3rd party components
Enforcing licenses with XP's
XP's as black boxes

23. Managed Code in SQL Server 2005
.NET vs TSQL
.NET vs XP’s
The right choice
Hello World in VB.NET
Visual Studio 2005
Stored Procedures with .NET code
Compiling from the Command Prompt
Express Manager
Levenshtein distance in .NET
Comparing Rijndael encryption
Comparing several MD5 implementations

24. Security in SQL Server 2000
Port security
SQL Injection
Cross-site scripting (XSS)
Buffer overflows
Snort
Security tools

25. From TSQL to XP's
TEA encryption with TSQL
TEA encryption with XP_CRYPTOAPI

26. SQL Server database tutorial
SQL Server default databases
Data types
Data types for code and data structure use
Data types for code use
Data types for data structure use
Data types for blobs
Tables
Data Integrity
Referential Integrity
Constraints
Rules, Defaults, and User-Defined Data Types
Views
Joins
Temporary tables
Subqueries
Derived table
Cursors
Indexes
SQL Server Collation
Triggers
Referential Integrity with triggers

27. SQL Server stored procedure tutorial
Samples of SP’s
Parameter handling
SP with optional Input parameters
Mean, Median and Modal with SP’s
SP error management
Rowset returning SP's
Start up SP's
Recursive SP's
Crosstab queries
Dynamic SQL

28. SQL Server User-defined functions (UDF's)
Types of functions
Scalar UDF's
Inline Table-valued UDF's
Multi-statement Table-valued UDF's
Recursive UDF’s
Jobs
Alerts

29. System XP's
Documented system XP's
Undocumented system XP's
Interesting undocumented system XP's
File related XP's
Registry related XP's
One-way encryption
SQL Mail Procedures

30. The Authors
Joseph Gama
Patrick Joseph (PJ) Naughter

商品描述(中文翻譯)

**描述**

這本獨特的書專注於透過外部程序來超充 SQL Server 數據庫的性能。

SQL Server 運行著金融、銀行、生技、電子商務、數據倉儲、科學應用等數據庫,這些應用通常需要處理大量數據,並使用複雜的公式或算法。大多數工作是通過 TSQL 儲存過程和 .NET 程序(在 SQL Server 2005 中)來完成的,然而這兩者都無法達到外部程序的性能和靈活性,因為外部程序是原生編譯的代碼。外部程序類似於儲存過程,但擁有 C++ 的強大功能,適用於 CPU 密集型算法、硬體/低層級訪問、使用外部庫等。

數據庫管理員/開發人員可以創建更高效的代碼,避免昂貴、緩慢和不可靠的第三方工具。還有一個額外的好處是源代碼被編譯,以保護知識產權。

本書旨在幫助希望學習數據庫編程並無縫使用其 C++ 技能的 C++ 程序員,以及需要比 TSQL、.NET 程序或 ADO 更高性能、功能和靈活性的數據庫管理員和/或程序員。

**目錄**

1. 擴展儲存過程介紹
- 什麼是 XP - '擴展儲存過程'?
- 為什麼使用 XP?
- 如何創建 XP?
- 如何使用 XP?
- 如何調用 XP?
- 有關創建 XP 的編譯器/語言
- VB 能否創建 XP
- SQL Server 2005 和擴展儲存過程
- ODS API
- 如何安裝 ODS 代碼範例、庫和標頭
- 從企業管理器註冊 XP
- 使用查詢分析器
- 擴展儲存過程的執行
- XP 範例
- 參數處理
- 數據類型

2. 各種編譯器和語言
- Microsoft Visual C++ - WIN32 DLL xp_hellovcdll
- Microsoft Visual C++ - WIN32 MFC DLL xp_hellomfc
- CodeWarrior xp_hellocw
- Borland C++ xp_hellobcc
- Dev-C++ xp_hellodevc
- MINGW xp_hellomw
- Intel C++ 編譯器
- Digital Mars
- 有關編譯的注意事項
- Microsoft Platform SDK
- 調試 XP
- 執行錯誤

3. 用於 XP 的 C++ 類框架 (XP++)
- 導出函數
- 支持 __GetXpVersion
- 通過使用 C++ 類實現封裝
- 自動鏈接到正確的 ODS 載入庫
- 封裝參數的驗證和設置
- 提供參數數據類型的自動轉換
- 封裝 ODS 提供的 SDK 調用
- 減少 ODS 所需的參數數量
- 追蹤內存洩漏
- 使用框架
- 其他範例
- 總結

4. 網絡消息 (XP_NETSEND)
- 實現
- XP_NET_ADDNAME
- XP_NET_DELNAME
- XP_NET_SEND
- 測試代碼
- XP_NETSEND 的應用
- 總結

5. SMTP 郵件 (XP_SMTPSENDMAIL)
- 郵件庫的選擇
- 使用 CDO for Windows 2000
- 實現細節
- 代碼重點
- XP_SMTPSENDMAIL 的應用
- 總結

6. NT 事件日誌 (XP_NTLOG)
- 實現
- XP_NTLOG_INSTALL
- XP_NTLOG_UNINSTALL
- XP_NTLOG_ERROR, XP_NTLOG_WARNING & XP_NTLOG_INFORMATIONAL
- 測試代碼
- XP_NTLOG 的應用
- 總結

7. 磁碟日誌 (XP_DISKLOG)
- 實現
- 測試代碼
- 總結

8. 音頻通知 (XP_NOTIFY)
- 初步實現
- XP_SIMPLE_MESSAGEBEEP, XP_ICONASTERISK_MESSAGEBEEP, XP_ICONEXCLAMATION_MESSAGEBEEP, XP_ICONHAND_MESSAGEBEEP, XP_ICONQUESTION_MESSAGEBEEP 和 XP_OK_MESSAGEBEEP
- XP_BEEP
- XP_PLAYSOUNDFILE 和 XP_STOPSOUND
- XP_PLAYSOUNDALIAS
- XP_PLAYSOUNDMEMORY
- 測試代碼
- XP_NOTIFY 的應用
- 總結

9. 編碼 HTML 特殊字符 (XP_HTMLENCODE)
- 實現
- 測試代碼
- XP_HTMLENCODE 的應用
- XP_HTMLENCODE2
- 總結

10. 密碼學 (XP_CRYPTOAPI)
- 哈希
- 對稱加密 / 解密
- 哈希消息認證碼
- 非對稱加密 / 解密
- 消息簽名 / 驗證
- 公鑰管理
- XP_CRYPTOAPI 使用
- XP_CRYPTOAPI 的應用
- 總結

11. 隨機數據 (XP_RAND)
- 實現
- 測試代碼
- XP_RAND 的應用
- 總結

12. INI 文件操作 (XP_INI)
- 實現
- XP_INI_WRITESTRING
- XP_INI_WRITEINTEGER
- XP_INI_READSTRING
- XP_INI_READINTEGER
- XP_INI_GETSECTIONS
- XP_INI_READSECTION
- XP_INI_DELETESECTION
- XP_INI_DELETEKEY
- XP_INI_GETKEYS
- XP_INI_WRITE
- XP_INI_READ
- 測試代碼
- 總結

13. 獲取可用磁碟空間 (XP_DISKSPACE)
- 實現
- 測試代碼
- 總結

14. 獲取 CPU 使用率 (XP_CPUUSAGE)
- 實現
- 測試代碼
- XP_CPUUSAGE 的應用
- 總結

15. 原始套接字範例 (XP_RAWIP)
- 實現
- 測試代碼
- 總結

16. 地理信息系統 (XP_GIS)
- 介紹
- 地球的形狀
- 基準面
- 坐標系和 UTM
- 實現
- XP_GIS_ELLIPSOIDINFO
- XP_GIS_DATUMINFO
- XP_GIS_DATUMTRANSFORM
- XP_GIS_LL2UTM
- XP_GIS_UTM2LL
- XP_GIS_DISTANCE_BETWEEN
- 測試代碼
- 總結

17. 正則表達式 (XP_REGEXP)
- 實現
- 測試代碼
- XP_REGEXP 的應用
- 總結

18. 多用途 XP (XP_SERVERREACHABLE)
- 初步創建
- 添加 COM / Win32 DLL 支持
- 添加 XP 支持
- 測試代碼 (XP 支持)
- 測試代碼 (Win32 DLL 支持)
- 測試代碼 (COM 支持)
- 總結

19. 計算天文學 (XP_ASTRO)
- 實現
- XP_ASTRO_DATE2JULIAN & XP_ASTROJULIAN2DATE
- XP_ASTRO_DELTAT
- XP_ASTRO_SPRING_EQUINOX, XP_ASTRO_SUMMER_SOLSTICE, XP_ASTRO_AUTUMN_EQUINOX & XP_ASTRO_WINTER_SOLSTICE
- XP_ASTRO_MOONPHASEK & XP_ASTRO_MOONPHASE
- 測試代碼
- 總結

20. IP 配置 (XP_IPConfig)
- IPConfig
- IPConfig 語法
- 實現
- IP Helper
- 測試代碼
- 總結

21. 超越 C/C++ (XP_RUNSCRIPT)
- 為什麼需要?
- sp_OACreate, sp_OAMethod 等
- 解決方案
- 對象模型
- 初步創建
- XPServer 對象
- XPParameters 對象
- XPParameter 對象
- 添加 XP 和主動腳本支持
- 擴展以支持 Visual Basic 等
- 測試代碼
- 總結

22. 使用 XP 保護知識產權
- 先前的技術
- 有價值的免責聲明
- 技術保護
- 儲存過程可以被解密
- 第三方組件的市場
- 使用 XP 強制執行許可
- XP 作為黑箱

23. SQL Server 2005 中的管理代碼
- .NET 與 TSQL
- .NET 與 XP
- 正確的選擇
- VB.NET 中的 Hello World
- Visual Studio 2005
- 帶有 .NET 代碼的儲存過程
- 從命令提示符編譯
- Express Manager
- .NET 中的 Levenshtein 距離
- 比較 Rijndael 加密
- 比較幾個 MD5 實現

24. SQL Server 2000 中的安全性
- 端口安全
- SQL 注入
- 跨站腳本 (XSS)
- 緩衝區溢出
- Snort
- 安全工具

25. 從 TSQL 到 XP
- 使用 TSQL 進行 TEA 加密
- 使用 XP_CRYPTOAPI 進行 TEA 加密

26. SQL Server 數據庫教程
- SQL Server 默認數據庫
- 數據類型
- 用於代碼和數據結構的數據類型
- 用於代碼使用的數據類型
- 用於數據結構使用的數據類型
- 用於 BLOB 的數據類型
- 表
- 數據完整性
- 參考完整性
- 約束
- 規則、默認值和用戶自定義數據類型
- 視圖
- 連接
- 臨時表
- 子查詢
- 派生表
- 游標
- 索引
- SQL Server 排序
- 使用觸發器的參考完整性

27. SQL Server 儲存過程教程
- SP 的範例
- 參數處理
- 帶有可選輸入參數的 SP
- 使用 SP 的平均值、中位數和眾數
- SP 錯誤管理
- 返回行集的 SP
- 啟動 SP
- 遞歸 SP
- 交叉表查詢
- 動態 SQL

28. SQL Server 用戶自定義函數 (UDF)
- 函數類型
- 標量 UDF
- 行內表值 UDF
- 多語句表值 UDF
- 遞歸 UDF
- 作業
- 警報

29. 系統 XP
- 有文檔的系統 XP
- 無文檔的系統 XP
- 有趣的無文檔系統 XP
- 與文件相關的 XP
- 註冊表