GAE支持Java对很多java开发者来说是一个非常令人兴奋的消息。做应用存储是少不了的,Google给的答案是Datastore。它和我们以往使用的关系型数据库有很大不同,你不需要创建表,可以直接进行添加、修改、删除等操作。Google说datastore是分布式的,可以提供很好的伸缩性,易于扩展。
Google的datastore对java的api有三种:JDO、JPA、LowApi,JDO和JPA是建立在LowApi之上的。这api功能比较有限,我们不能像使用关系型数据库一样用SQL操作datastore中的内容。
HGSQL是一个虚拟数据库引擎,它提供了强大的SQL处理能力。它针对Google Datastore发布了一个接口API,该API也是建立在LowApi之上。http://hgsql4gae.appspot.com/是该API的演示,你可以在上面输入SQL语句进行操作里面存储的数据。
1、插入测试数据
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0001', '王东', '职员', '0013', '1980-02-05', '800', '0', '20');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0002', '李海卫', '销售', '0006', '1979-08-15', '1600', '300', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0003', '张空', '销售', '0006', '1982-08-07', '1250', '500', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0004', '孔兵', '经理', '0009', '1982-03-01', '2975', '0', '20');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0005', '刘龙维', '销售', '0006', '1982-10-13', '1250', '1400', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0006', '张云', '经理', '0009', '1977-02-14', '2850', '0', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0008', '王芳', '主管', '0004', '1981-10-18', '3000', '0', '20');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0010', '张凯', '销售', '0006', '1979-07-29', '1500', '200', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0011', '宋建', '职员', '0008', '1980-01-23', '1100', '0', '20');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0012', '李保', '职员', '0006', '1982-04-11', '950', '0', '30');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0013', '刘海星', '主管', '0004', '1978-01-30', '3000', '0', '20');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0015', '刘固', '顾问', '0009', '1980-01-22', '3000', '0', '10');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0007', '关心', '经理', '0009', '1978-07-27', '2450', '0', '10');
insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0009', '刘程飞', '总经理', '', '1982-01-17', '5000', '0', '10');
2、执行一个简单查询
select * from 员工 order by 编号
3、执行一个比较复杂查询
select *
from (select *
from (select 编号,姓名, 部门, 职位, 工资
from 员工
union all
select '', '', 部门, 职位, sum(工资)
from 员工
group by rollup(部门, 职位)))
order by nvl(部门, char(65535)),
nvl(职位, char(65535))
4、删除数据
delete from 员工
HGSQL forGoogle Datastore的使用非常简单,首先从http://hgsql4gae.appspot.com/中下载接口程序包hggds.jar,然后加入到你的GAE项目中,调用类com.hg.gds.HgGds中的query和execute方法就可以了。语法参考:http://www.hgsql.com/down/SQL参考手册.pdf