極致查詢性能 sqltoy-orm-4.12.8 發版增加對國產達夢資料庫支持

2020-12-23 開源中國

更新內容

1、主要增加對國產達夢資料庫的支持(目前除updateFetch:單次交互完成鎖記錄、修改、返回結果報遊標錯誤外其他功能都通過測試)
2、修復因增加oceanBase方言導致sqlite方言未放入方言池中產生的bug
3、增加findEntity分頁功能,便於單表查詢直接可以鏈式代碼中完成
4、優化Query()鏈式查詢增加分頁,同時將Page()鏈式分頁代碼標註為作廢
5、優化一些注釋和日誌輸出

開源地址:

sqltoy特點說明:

  • 支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch、mongodb等
  • 具有JPA模式的CRUD功能(即CRUD無需寫sql),無需寫Dao,sqltoy提供了SqlToyLazyDao,同時提供了quickvo從資料庫生成POJO。
  • 根本上杜絕了sql注入問題
  • 最科學的sql編寫方式

* sqltoy的sql編寫(支持嵌套)

select *from sqltoy_device_order_info t where #[t.ORDER_ID=:orderId] #[and t.ORGAN_ID in (:authedOrganIds)] #[and t.STAFF_ID in (:staffIds)] #[and t.TRANS_DATE>=:beginDate] #[and t.TRANS_DATE<:endDate]

* mybatis同樣功能實現

select * from sqltoy_device_order_info t <where> <if test="orderId!=null"> and t.ORDER_ID=#{orderId} </if> <if test="authedOrganIds!=null"> and t.ORGAN_ID in <foreach collection="authedOrganIds" item="order_id" separator="," open="(" close=")"> #{order_id} </foreach> </if> <if test="staffIds!=null"> and t.STAFF_ID in <foreach collection="staffIds" item="staff_id" separator="," open="(" close=")"> #{staff_id} </foreach> </if> <if test="beginDate!=null"> and t.TRANS_DATE>=#{beginDate} </if> <if test="endDate!=null"> and t.TRANS_DATE<#{endDate} </if></where>

  • 緩存翻譯大幅提升性能,減少多表關聯,讓sql直觀可維護

  • 支持用算法代替sql實現行列轉換、同比環比、分組匯總等

  • 支持分庫分表
  • sqltoy支持跨資料庫函數自適應:一套sql可以自適應多種資料庫
  • 提供了5種默認的非資料庫相關的主鍵策略

1、shortNanoTime 22位有序安全ID,格式: 13位當前毫秒+6位納秒+3位主機ID2、nanoTimeId 26位有序安全ID,格式:15位:yyMMddHHmmssSSS+6位納秒+2位(線程Id+隨機數)+3位主機ID3、uuid:32 位uuid4、SnowflakeId 雪花算法ID5、redisId 基於redis 來產生規則的ID主鍵

  • sql文件更新自動重載,便於開發階段無需重啟應用
  • 慢sql統計功能
  • 便於跟其他拓展平臺集成,如報表平臺、配置化服務平臺

```java

public class SqlToyContext implements ApplicationContextAware {

   // 省略其他代碼

  /**
     * @todo 提供可以動態增加解析sql片段配置的接口,並返回具體id,用於第三方平臺集成,如報表平臺等
     * @param sqlSegment
     * @return
     * @throws Exception
     */
    public synchronized SqlToyConfig parseSqlSegment(Object sqlSegment) throws Exception {
        return scriptLoader.parseSqlSagment(sqlSegment);
    }

}

```

相關焦點

  • sagacity-sqltoy 4.17.8 發布,Java ORM 框架
    sagacity-sqltoy 4.17.8 已經發布,此版本更新內容包括:1、支持緩存翻譯未匹配模板設置為空白或空字符串: uncached-template=""(之前空白當成無效設置
  • sqltoy-orm-4.16.16 發版,並行查詢場景增強、級聯增加排序
    -- <table name="SQLTOY_DICT_DETAIL" update-cascade="delete" load="STATUS=1" orderBy=""/> --></cascade>2、並行查詢可以自行設置每個查詢的條件參數3、優化findEntity 資料庫關鍵詞的處理4、sqltoy-boot-starter
  • sqltoy-orm 4.13.12.1 發版,增加 DTO 和 POJO 互轉工具方法
    支持的更加全面場景更加充分! 請不要見xml就反,說實在的在2010年之前crud就已經是沒有sql和xml了(如果有興趣可以了解一下sqltoy的update跟其它ORM的異同,也可以了解一下sqltoy中什麼是updateFetch,相信會看到另類的思考),不提crud是默認大家已經跨越了crud已經面對複雜查詢問題(難道默認值設高了?)
  • sqltoy-orm 4.13.8 發版 - OSCHINA - 中文開源技術交流社區
    ,目前以sql id為籤名,便於運維通過資料庫來跟蹤sql的歸屬以mysql為例: 在sql開始部位增加了id,便於運維通過資料庫日誌快速定位問題sql的歸屬```sql/* id=qstart_order_search */  select  ORDER_ID,      DEVICE_TYPE from xxx```感謝網名cmd的用戶反饋此意見
  • 極致性能 sqltoy-orm-4.12.9 發版 - OSCHINA - 中文開源技術交流...
    tidb,建議可以初步試用2、針對elastic升級fastjson到1.2.70版本,修復安全漏洞,同時升級spring依賴版本3、優化少量代碼4、初步增加guassdb、oceanbase的方言支持,希望有相關使用者協助測試!
  • sqltoy-orm-4.16.11 發版,部分功能優化
    ,classType) 便於對分頁模型整體類型轉換sqltoy的十四個關鍵特點:1、最簡最直觀的sql編寫方式(不僅僅是查詢語句),採用條件參數前置處理規整法,讓sql語句部分跟客戶端保持高度一致2、sql中支持注釋(規避了對hint特性的影響,知道hint嗎?
  • sqltoy-orm-4.17.6 發版,支持 Greenplum、並行查詢可設置並行數量
    開源地址:更新內容1、支持greenplum olap資料庫2、並行查詢支持自行定義並行數量和最大等待時長
  • 國產資料庫優秀選手,達夢是如何做到的?
    我不知道會有多少人堅持,但達夢一定會堅持,並且會努力跑完全程。  達夢自2000年加入國產資料庫這場長跑,如今儼然成為了國產資料庫領域的優秀跑者,即便自研這條路異常難走,但達夢卻愣是堅持了這十餘年,套用一位作家的話來說,由於這10多年間從不間斷地跑步,達夢大致朝著良好的方向得到強化。
  • BeetlSQL 3.1.2 發布,Java 資料庫訪問工具
    </artifactId> <version>3.1.2-RELEASE</version></dependency>BeetlSQL的目標是提供開發高效,維護高效,運行高效的資料庫訪問框架,在一個系統多個庫的情況下,提供一致的編寫代碼方式。
  • 資料庫周刊31丨華為高斯開源;國產資料庫排行;浙江移動AntDB……
    2、2020年7月國產資料庫排行:華為、騰訊發新品,中興、阿里結碩果【摘要】2020年7月號國產資料庫流行度排行榜,TiDB、OceanBase和達夢資料庫依舊穩居前三。阿里、騰訊、華為為代表的國內大廠紛紛動作不斷,新品、新聞頻出。
  • 達夢分布式資料庫演進
    正文  我分享的主題是「達夢分布式資料庫演進」,主要分享達夢公司分布式資料庫演進、發展歷程,介紹達夢公司對分布式資料庫未來發展和應用前景的分析觀點。  在正式分享前,我想先從幾個不太相關的小故事講起,以歸納我的核心觀點。
  • 一次神奇的 sql 查詢經歷,group by 慢查詢優化記錄
    一、問題背景  現網出現慢查詢,在500萬數量級的情況下,單表查詢速度在30多秒,需要對sql進行優化,sql如下:  我在測試環境構造了500萬條數據,模擬了這個慢查詢。  簡單來說,就是查詢一定條件下,都有哪些用戶的,很簡單的sql,可以看到,查詢耗時為37秒。
  • 作為資料庫核心成員,如何讓淘寶不卡頓?
    沒辦法,硬著頭皮去濱江上班,一刷卡,才發現我並不是我,我現在的身份是淘寶資料庫團隊的核心成員。此時全國上下在迎接著奧運的到來,一片祥和。淘寶網成交額突破400億,日活用戶達1000萬。工程師們都非常興奮,磨刀霍霍。但是也遇到了棘手的問題。
  • Java資料庫連接性簡介
    JDBC API支持Java應用程式與JDBC管理器之間的通信。2. JDBC驅動程序支持JDBC管理器和資料庫驅動程序之間的通信。JDBC是您的應用程式代碼與之交互的通用API。下面是您正在使用的資料庫的JDBC兼容驅動程序。圖1是Java持久層中JDBC的體系結構概述。
  • 國產資料庫行業研究與投資機會:寬賽道、高壁壘、新機遇
    經過近 30 年的發展,國產資料庫已經形成了以武漢達夢、人大金倉、南大通用和神舟通用「四小龍」為代表的,以阿里、騰訊和華為科技巨頭為代表的,以科藍軟體外延併購 SUNJE SOFT 廠商切入資料庫賽道為代表的,以及百餘家新興資料庫廠商採用開源參與的競爭格局。其中,武漢達夢、南大通用等企業廠商年銷售額均在億元以上。
  • 除了華為、阿里自研資料庫,還有哪些國產資料庫?發展狀況如何?
    2019年5月,華為將磨礪了12年之久的GaussDB 資料庫發布,並率先通過了中金國盛金融行業標準符合性試點測評。10月,國務事務處理性能委員會公布的性能測試結果,在TPC-C基準測試中阿里的OceanBase 打破了由 Oracle 保持了9年的世界紀錄,一時引發了行業熱議。
  • 任意資料庫轉換工具,不同類型資料庫之間極速轉換
    在轉換前對資料庫進行多種已知問題的檢查; 2. 源資料庫同步轉換到新資料庫時,保留數據表屬性設置; 3. 資料庫無損遷移後,DB2DB自檢數據處理情況,列出問題清單; 4. 支持T級數據量同步轉換。
  • mysql┃多個角度說明sql優化,讓你吊打面試官!
    ) 1.4合理的增加冗餘欄位 在我們剛開始學習mysql的時候,就會了解到資料庫的三範式,而在實際的使用過程中,為了性能,我們也可以拋棄資料庫的三範式。 moon在之前的公司就有這樣的問題,一條sql語句要連5張表,正常一個查詢下來可能要1分多鐘,所以這條sql太重了,而在moon的細心觀察下發現,其中兩張表都只用到了其中一個欄位,然後我就和DBA商量下將這兩個欄位冗餘到了其它的兩個表中(業務有關聯),結果這條sql語句的執行時間就變成了十幾秒。
  • 女朋友都能看懂的,SQL優化乾貨
    select * from A where score=8*106、數據量大的時候,使用了where 1=1一般這樣寫,是為了避免條件空時,sql異常select name from A wherevarchar,也就是字符串,而sql中用name=1來查詢,sql內部自動進行了類型轉換,不走索引10、order by條件與where條件不一致,order by無法使用索引排序select * from where A order by ageselect
  • BeetlSQL 3.0.0-M1 第一個版本發布 - OSCHINA - 中文開源技術交流...
    經過8個月的重構,BeetlSQL3裡程碑1已經完成BeetlSQL是一款資料庫訪問工具庫,廣泛應用到企業應用,網際網路項目。相比於BeetlSQL2,新版支持更多數據來源,包括支持JDBC的傳統資料庫,大數據NOSQL,以及大數據SQL查詢引擎,在易用性何擴展性也做了大幅度修改。