100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > DataSong大数据智能管理平台 用户手册-开发部分

DataSong大数据智能管理平台 用户手册-开发部分

时间:2018-10-24 10:35:39

相关推荐

DataSong大数据智能管理平台 用户手册-开发部分

3 接口使用说明

3.1 数据定义接口(DDL)

3.1.1 创建数据库

3.1.1.1 创建数据库

3.1.1.2 示例代码

引入DataSongClient驱动包,实现如下:

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);boolean result = dataSongClient.createDB(dbName);System.out.println(result);

注意:dbName只能包含字母或数字且不能以数字开头

3.1.2 创建数据表

3.1.2.1 接口说明

3.1.2.2 示例代码

引入DataSongClient驱动包,实现如下:

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName(dbName);//注意需要指定数据库boolean result = dataSongClient.createTable(Student.class);System.out.println(result);

注意1:首次使用dataSongClient实例,需要制定操作的数据库,指定一次即可。

注意2:表的创建可以直接通过class自动完成,Student定义如下:

@DSStoreType(StoreType.Fulltext)//指定表的存储类型,如fulltext、sql等@DSTableName(value = "student")//指定数据库名字,可不指定,默认会自动用类名public class Student extends DataSongBean {@DSFulltextIndexType(FulltextIndexType.None)//设置仅存储,不索引,即不可作为条件检索,节约存储空间private String classid;@DSFulltextIndexType(FulltextIndexType.None)private Date createtime;@DSFulltextIndexType(FulltextIndexType.Whitespace)//设置空格分词private String interest;@DSFulltextIndexType (FulltextIndexType.IK) //设置中文分词private String name;private int age;//不设置,默认可检索@DSFulltextIndexType(FulltextIndexType.None)private Date birth;}

1)DataSongBean中内置了内部唯一标识_id,即DataSong所有表都会有一个内置的唯一id。

2)DataSong的所有注解都是“DS”开头,分为类级别和属性级别,如下图所示:

不同的存储类型(DSStoreType)应该对应不同的索引类型(DSFulltextIndexType、DSGraphIndexType、DSMemIndexType、DSNoSqlIndexType、DSSqlIndexType)。其他的属性级别注解不用区分存储类型。

3.1.3 删除数据表

3.1.3.1 接口说明

3.1.3.2 示例代码

引入DataSongClient驱动包,实现如下:

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName(dbName);//注意需要指定数据库boolean result = dataSongClient.deleteTable(Student.class);System.out.println(result);

注意:此删除为物理删除,一经删除,不能恢复。

3.1.4 删除数据库

3.1.4.1 接口说明

3.1.4.2 示例代码

引入DataSongClient驱动包,实现如下:

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);boolean result = dataSongClient.deleteDB(dbName);System.out.println(result);

注意:此删除为物理删除,一经删除,不能恢复。

3.2 数据操作接口(DML)

3.2.1 数据查询接口

3.2.1.1 接口说明

内部查询体系如下:

3.2.1.2 示例代码

(1) 查询条件构建

精确匹配条件:

//写法1.1TermSearchCondition term = new TermSearchCondition();term.setValue(new int[]{6, 7});term.setColumn("age");//写法1.2TermSearchCondition ageTermSearchCondition = ConditionBuilder.termCondition("age", 7);//写法2.1TermSearchCondition interestTermSearchCondition = ConditionBuilder.termCondition("interest", new String[]{"跳高","篮球"});//写法2.2TermSearchCondition interestTermSearchCondition = ConditionBuilder.termCondition("interest", "跳高 篮球");//对查询条件也会自动分词

范围查询条件

//写法1RangeSearchCondition rangeSearchCondition = new RangeSearchCondition();rangeSearchCondition.setFrom("-02-07 18:25:04");// rangeSearchCondition.setTo("-02-07 18:25:05.6");//可以只设置一边的限制rangeSearchCondition.setColumn("createtime");//写法2RangeSearchCondition createtimeRangeSearchCondition = ConditionBuilder.rangeCondition("createtime","-03-06 8:25", "-03-06 18:25:05.6");

Bool查询条件

BoolSearchCondition boolSearchCondition = new BoolSearchCondition();boolSearchCondition.must(rangeSearchCondition);//.must(ageTermSearchCondition).must(createtimeRangeSearchCondition);

(2) 统计条件构建

说明:统计满足查询条件的数据集中数据的分布情况。基础的单值统计不能多级级联,分组统计支持多级级联,可以类比SQL查询。统计结果是以table的形式返回,同样可以类比SQL查询。所有统计需要设置一个别名Alias,同一个查询中的多个条件,别名不能重复。

均值统计

//写法1AvgStatisticCondition avgStatisticCondition = new AvgStatisticCondition();avgStatisticCondition.setAlias("avg");avgStatisticCondition.setColumn("age");//写法2AvgStatisticCondition c1 = ConditionBuilder.avgStatisticCondition("age", "平均值统计");

求和统计

//写法1SumStatisticCondition sumStatisticCondition = new SumStatisticCondition();sumStatisticCondition.setAlias("sum");sumStatisticCondition.setColumn("age");//写法2SumStatisticCondition c2 = ConditionBuilder.sumStatisticCondition("age", "求和统计");

计数统计

CountStatisticCondition c4 = ConditionBuilder.countStatisticCondition("age", "count统计");

按日期区间分组统计——支持设置下一级

//对createtime列,按天分组统计DateRangeStatisticCondition dateRangeStatisticCondition = ConditionBuilder.dateRangeStatisticCondition("createtime", "time_statistic", DateInterval.Day);//日期区间可以设置下一级统计dateRangeStatisticCondition.addChild(c4);dateRangeStatisticCondition.addChild(c5);

按类型分组统计——支持设置下一级

//对interest列,分组统计TermStatisticCondition termStatisticCondition = ConditionBuilder.termStatisticConditiontermStatisticCondition.setColumn("interest");termStatisticCondition.setAlias("alias");termStatisticCondition.addChild(c4);termStatisticCondition.addChild(sumStatisticCondition);

(3) 查询

SearchDataRequest searchDataRequest = new SearchDataRequest();//设置查询条件searchDataRequest.setSearch(boolSearchCondition);//添加统计条件,允许并行设置多个统计条件,索引采用add方式searchDataRequest.addStatistic(c3);//设置分页searchDataRequest.setStart(0);searchDataRequest.size(5);//设置排序searchDataRequest.sort("birth", SortOrder.ASC);searchDataRequest.sort("createtime", SortOrder.DESC);//设置需要取的列searchDataRequest.setColumns(new String[] {"interest"});//不设置默认返回所有列DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip, port);dataSongClient.setDatabaseName(dbName);DataSongSearchResult response = dataSongClient.getDataService().searchData(Student.class ,searchDataRequest);//设置实体类,会自动进行翻转//命中总条数System.out.println("符合条件的总条数:"+response.getTotal());//解析查询结果(如果有)for(int i = 0 ; i <response.getItems().size(); i++) {System.out.println(DataSongJsonUtils.toJson(response.getItems().get(i)));}//解析统计结果(如果有)//返回结构封装成了与jdbc协议中ResultSet一样的结构(即表格结构)for(int index = 0 ; index < response.getStatistics().size() ; index++){DataSongResultSet resultSet = (DataSongResultSet) response.getStatistics().get(index);//表头解析,即用户自定义别名ResultSetMetaData rsmd = resultSet.getMetaData();for (int i = 1; i <= rsmd.getColumnCount(); i++) {System.out.print(rsmd.getColumnName(i)+"\t\t");}System.out.println();//结构解析while(resultSet.next()){for(int i=1;i<=rsmd.getColumnCount();i++){System.out.print(resultSet.getObject(i));System.out.print("\t\t");}System.out.println();}}

3.2.1 数据插入与修改

3.2.1.1 接口说明

3.2.1.2 示例代码

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");StudentBean studentBean = new StudentBean();// studentBean.set_id("1"); //非必须设置studentBean.setAge(2);studentBean.setClassid("sdf");studentBean.setCreatetime(new Date());studentBean.setName("sdfssdfdf");studentBean.setInterest("足球 篮球 乒乓球");dataSongClient.getDataService().saveData("StudentBean",studentBean); //对于相同_id的数据,会直接覆盖。所以,修改数据时需要把不需要修改的字段也带上,遵循rest规范。//批量插入List<StudentBean> datas = new ArrayList<>();dataSongClient.getDataService().batchSaveData( datas);

说明:插入时表名不是必须显示的指定,可以根据数据类型自动解析对应的表名。

3.2.2 数据删除

3.2.2.1 接口说明

3.2.2.2 示例代码

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");boolean result = dataSongClient.getDataService().deleteData(StudentBean.class, "11"); //表名可以是类,可以是字符串System.out.println(result);//批量删除写法如下:List<String> ids = Arrays.asList(new String[]{"11","12","13"});long result = dataSongClient.getDataService().batchDeleteData(StudentBean.class, ids); //库名可以是类,可以是字符串

3.2.3 数据检索

老版接口,功能更全,使用起来比较繁琐,不推荐使用。

3.2.4数据获取

3.2.4.1 接口说明

3.2.4.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");//实质库名StudentBean result = dataSongClient.getDataService().getData(StudentBean.class, "1"); //表名可以是类,可以是字符串。如果是字符串返回的是json格式System.out.println( DataSongJsonUtils.toJson(result));//如果是批量获取,写法如下List<String> ids = Arrays.asList(new String[]{"1","2","3"});List<StudentBean> result = dataSongClient.getDataService().batchGetData(StudentBean.class, ids); //表名可以是类,可以是字符串

3.2.5 数据清空

3.2.5.1 接口说明

3.2.5.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");boolean result = dataSongClient.getDataService().clearData(StudentBean.class); //表名可以是类,可以是字符串System.out.println( result);

3.3 文件操作接口

3.3.1 文件本地上传

3.3.1.1 接口说明

3.3.1.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");String id = dataSongClient.getFileService().uploadFile(StudentBean.class,"D:\\新建文本文档.txt"); //对于相同_id的数据,会直接覆盖System.out.println( id);

3.3.2 文件删除

3.3.2.1 接口说明

3.3.2.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");boolean id = dataSongClient.getFileService().deleteFile(StudentBean.class,"dddddddd");System.out.println( id);

3.3.3 文件下载

3.3.3.1 接口说明

3.3.3.1 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");boolean id = dataSongClient.getFileService().downloadFile(StudentBean.class,"dddddddd","d://ddd.txt");System.out.println( id);

3.3.4 文件流式上传

3.3.4.1 接口说明

3.3.4.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");FileInputStream inputStream = new FileInputStream(new File("D:\\新建文本文档.txt"));//流也可以通过浏览器回传的流获取String id = dataSongClient.getFileService().uploadFile(StudentBean.class,"新建文本文档.txt",inputStream); //对于相同_id的数据,会直接覆盖System.out.println( id);

3.3.5 文件流式下载

3.3.5.1 接口说明

3.3.5.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");InputStream inputStream = dataSongClient.getFileService().downloadFileStream(StudentBean.class,"dddddddd");System.out.println( inputStream);

3.3.6 文件预览

3.3.6.1 接口说明

3.3.6.2 代码示例

DataSongClient dataSongClient = DataSongHttpClient.getInstance(ip,port);dataSongClient.setDatabaseName("test");boolean result = dataSongClient.getFileService().previewFile(StudentBean.class,"dddddddd", servletResponse);System.out.println( result);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。