CowNewSQL发布新版本了,这个版本的推出标志着CowNewSQL能正式应用于开发实际了。
本版更新列表:
1、增加了对Create Table、Drop Table、Create Index和DropIndex的支持。
2、修改了N多Bug,使用从各方收集到的近百条各种复杂的SQL语句全面测试通过!!!
3、完善开发文档,语法规则、SQL例子、函数列表、使用方法一应俱全。
4、支持JDK1.4或更高版本。
CowNewSQL简介:
由于种种原因,各个数据库系统的SQL
语句语法以及支持的函数都不尽相同,这造成了如下两个问题:(1
)使得系统在多个不同数据库之间移植变得非常困难,特别是需要维护多个数据库版本的时候;(2
)开发人员必须对各种数据库的语法差异非常了解,这加大了开发难度。
虽然Hibernate
通过HQL
等技术部分的解决了跨数据库移植的问题,但是在对性能要求比较高的场合还是需要直接使用SQL
语句访问数据库的,在这种情况下如何编写能被不同数据库支持的SQL
语句就成了。目前解决这种差异的最常用的技术就是SQL
语句翻译,使用SQL
翻译器可以将SQL
语句翻译为在不同的数据库中支持的特定平台的SQL
语句。CowNewSQL
就是这样一款产品。
CowNewSQL
简化了跨数据库产品的开发,比如取当前日期在MSSQL
中是“SELECT GETDATE()
”,在MYSQL
中是“SELECT NOW()
”,在Oracle
中是“SELECT SYSDATE FROM DUAL
”,使用CowNewSQL
以后您只要使用“SELECT NOW()
”,那么CowNewSQL
就会为您自动将其翻译为对应数据库平台支持的SQL
语句,而且CowNewSQL
的兼容性也非常好,比如“SELECT NOW()
”写成“SELECT GETDATE()
”同样可以被正确的翻译;取数据库前10
条记录,在MSSQL
中是“Select top 10 from T_1
”、在MYSQL
中是“SELECT LIMIT 0, 10
”、在Oracle
中是“SELECT FROM DUAL WHERE ROWNUM <= 10
”,使用CowNewSQL
以后您只要使用“Select top 10 from T_1
”,那么CowNewSQL
就会为您自动将其翻译为对应数据库平台支持的SQL
语句。
CowNewSQL
还通过变通的方式对目标数据库不直接支持的语法进行了支持。比如MYSQL
是不支持“select * from t1 where fid in(select fid from t2 limit 0,5)
”这样在子查询中的Limit
语句的,CowNewSQL
通过将子查询进行二次结果集包装的方式巧妙的对其进行了支持,“delete from T_SaleInvoice where FId in(select top 5 FParentId from T_SaleInvoiceDetails)
”通过CowNewSQL
的翻译以后就成了“DELETE FROM T_SaleInvoice WHERE FId IN (select * from(SELECT FParentId FROM T_SaleInvoiceDetails LIMIT 0, 5 ) t_temp_sub)
”这样被MYSQL
支持的语法了;MYSQL
中没有提供计算两个日期之间月份差异的函数,CowNewSQL
通过组合其他日期函数的方式模拟了这个函数,这样使用者只要使用MONTHS_BETWEEN
函数即可了,无需关心内部的差异。
CowNewSQL
支持如下几种类型的SQL
语句:CreateTable/DropTable/CreateIndex/DropIndex/Select/Insert/Delete/Update
;支持子查询、Join
、Union
等高级的SQL
特性;支持日期(包括取当前日期、从日期中提取任意部分、计算日期差异、日期前后推算等)、数学(包括取绝对值、取PI
值、四舍五入、对数计算、随机数等)、字符串(包括取子字符串、取字符串长度、字符串截断、大小写转换等)、基本数据处理(包括数字字符串互转、日期转字符串、非空判断等)等函数。