多個異構資料庫如何關聯查詢
DBlink 只適合同種資料庫關聯,難以關聯異構庫。其他方式不是改變部署架構,就是增加開發工作量,實施起來困難很多。
開發難度小的方式貌似是 ETL,把異構庫變成同構庫,就可以用熟悉的方式寫關聯 SQL。但這種方式需要改變原來的部署架構,硬加一個 ETL 層和一個資料集市層,一般還得加個管理員去維護定時排程,或者額外寫程式碼判斷“資料是否 ETL 完畢”。更大的問題是,這種方式需要把實時計算變成延遲計算,甲方爸爸知道了恐怕會拍桌子。
徹底的解決方案貌似是微服務,把高耦合的 ODBC/JDBC 介面變成低耦合的 http 介面,這樣就可以用統一的 json 或 xml 去傳輸資料。但這種方式要針對每張表開發資料服務介面,要針對每種演算法開發客戶端介面,還要用陌生的框架和類庫,要解決資料庫外的許可權安全……工作量頂天了。而且,具體的運算還得硬寫。
較現實的方法還可以用高階語言比如 JAVA,先用 SQL 把異構資料取過來,再用 arraylist 轉成 2 個類,接下來就可以進行 list 之間的 join 了。但這件事等於拿 JAVA 手工替代 SQL,簡單的合併還湊合,關聯查詢就難寫了,況且還有子查詢、關聯後分組彙總等實用演算法。總之,JAVA 缺乏結構化類庫,替代 SQL 的成本非常高。
如果使用集算器來實現異構庫關聯,則可以保持原部署架構,開發工作量也不大。首先,SPL 可用統一的資料結構訪問任意的資料庫表,這就解決異構的問題。其次,SPL 具有豐富的結構化類庫,很容易實現關聯查詢以及後續的實用演算法,經常比 SQL 還簡單。最後,集算器提供了 JDBC\ODBC 介面,程式設計師只需引入驅動程式,就可以在原來的程式碼上實現異構庫關聯。
比如 java 透過集算器的 JDBC 驅動,訪問 Oracle 的 orders 表,並關聯 MySQL 的 customer 表,最後對關聯結果分組彙總:
con=DriverManager.getConnection(“jdbc:esproc:local://”);
ResultSet rs = con.executeQuery(“orcl.query(/“select * from orders/”).join(cust,my.query(/“select * from customer/”):custid,city).groups(city;sum(amount))”);
關於多資料庫關聯,可參
關於集算器 JDBC 嵌入 JAVA,可參
關於集算器安裝使用、獲得免費授權和相關技術資料,可以參
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2698696/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 異構資料庫的關聯查詢 oracle hsodbc 關聯mysql資料庫OracleMySql
- 資料庫AR之關聯查詢資料庫
- 多個遠端資料庫查詢資料庫
- BIRT 異構跨庫的動態關聯查詢怎麼做
- day95:flask:SQLAlchemy資料庫查詢進階&關聯查詢FlaskSQL資料庫
- 20240719資料庫關聯查詢、條件查詢資料庫
- Oracle 查詢多個資料Oracle
- 關於同一個連線不同資料庫之間的 Eloquent 關聯查詢資料庫
- hyperf關聯子表查詢主表資料
- 關於資料庫批次查詢的一個想法資料庫
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- 如何做多表關聯查詢
- Laravel Eloquent 關聯模型查詢快取資料Laravel模型快取
- 資料庫學習(六)聯合查詢union資料庫
- java 分庫關聯查詢工具類Java
- 分庫資料如何查詢統計
- 資料庫查詢資料庫
- 在資料庫中查詢關鍵字資料庫
- 資料庫 - 資料查詢資料庫
- 資料庫資料的查詢----連線查詢資料庫
- 區分關聯子查詢和非關聯子查詢
- exist-in和關聯子查詢-非關聯子查詢
- tp5實現多資料庫查詢資料庫
- java 查詢資料庫並生成多層childrenJava資料庫
- SQL多個表實現聯合查詢SQL
- Yii2實現跨mysql資料庫關聯查詢排序功能MySql資料庫排序
- MyBatis關聯查詢MyBatis
- thinkphp關聯查詢PHP
- django 兩個表或多個表聯合查詢Django
- MySQL資料庫查詢多個欄位值全部相同的記錄MySql資料庫
- langchain_chatchat+ollama部署本地知識庫,聯網查詢以及對資料庫(Oracle)資料進行查詢LangChain資料庫Oracle
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- 資料庫高階查詢之子查詢資料庫
- 查詢皮膚中如何實現兩個 select 下拉框的關聯查詢?
- 關於Oracle資料庫的時間查詢Oracle資料庫
- onethinkphp 如何做多表關聯查詢PHP
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫