Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
d8402663
提交
d8402663
authored
6月 28, 2021
作者:
fit2cloud-chenyw
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 增加 抽取模式视图 后台缓存
上级
a4d512bb
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
89 行增加
和
9 行删除
+89
-9
ExtChartViewMapper.java
.../java/io/dataease/base/mapper/ext/ExtChartViewMapper.java
+7
-0
JdbcConstants.java
...ain/java/io/dataease/commons/constants/JdbcConstants.java
+6
-0
JdbcProvider.java
...in/java/io/dataease/datasource/provider/JdbcProvider.java
+18
-4
CacheUtils.java
...d/src/main/java/io/dataease/listener/util/CacheUtils.java
+4
-3
ChartViewService.java
...main/java/io/dataease/service/chart/ChartViewService.java
+26
-1
ExtractDataService.java
.../java/io/dataease/service/dataset/ExtractDataService.java
+15
-1
ehcache.xml
backend/src/main/resources/ehcache/ehcache.xml
+13
-0
没有找到文件。
backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.java
浏览文件 @
d8402663
...
@@ -2,9 +2,16 @@ package io.dataease.base.mapper.ext;
...
@@ -2,9 +2,16 @@ package io.dataease.base.mapper.ext;
import
io.dataease.controller.request.chart.ChartViewRequest
;
import
io.dataease.controller.request.chart.ChartViewRequest
;
import
io.dataease.dto.chart.ChartViewDTO
;
import
io.dataease.dto.chart.ChartViewDTO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.List
;
import
java.util.List
;
@Mapper
public
interface
ExtChartViewMapper
{
public
interface
ExtChartViewMapper
{
List
<
ChartViewDTO
>
search
(
ChartViewRequest
request
);
List
<
ChartViewDTO
>
search
(
ChartViewRequest
request
);
@Select
(
"select id from chart_view where table_id = #{tableId}"
)
List
<
String
>
allViewIds
(
@Param
(
"tableId"
)
String
tableId
);
}
}
backend/src/main/java/io/dataease/commons/constants/JdbcConstants.java
0 → 100644
浏览文件 @
d8402663
package
io
.
dataease
.
commons
.
constants
;
public
class
JdbcConstants
{
public
final
static
String
VIEW_CACHE_KEY
=
"view_cache"
;
}
backend/src/main/java/io/dataease/datasource/provider/JdbcProvider.java
浏览文件 @
d8402663
...
@@ -10,7 +10,6 @@ import io.dataease.datasource.request.DatasourceRequest;
...
@@ -10,7 +10,6 @@ import io.dataease.datasource.request.DatasourceRequest;
import
io.dataease.exception.DataEaseException
;
import
io.dataease.exception.DataEaseException
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.beans.PropertyVetoException
;
import
java.beans.PropertyVetoException
;
import
java.sql.*
;
import
java.sql.*
;
import
java.util.*
;
import
java.util.*
;
...
@@ -22,14 +21,29 @@ public class JdbcProvider extends DatasourceProvider {
...
@@ -22,14 +21,29 @@ public class JdbcProvider extends DatasourceProvider {
private
static
int
initPoolSize
=
5
;
private
static
int
initPoolSize
=
5
;
private
static
int
maxConnections
=
200
;
private
static
int
maxConnections
=
200
;
/**
* 增加缓存机制 key 由 'provider_sql_' dsr.datasource.id dsr.table dsr.query共4部分组成,命中则使用缓存直接返回不再执行sql逻辑
* @param dsr
* @return
* @throws Exception
*/
/**
* 这里使用声明式缓存不是很妥当
* 改为chartViewService中使用编程式缓存
@Cacheable(
value = JdbcConstants.JDBC_PROVIDER_KEY,
key = "'provider_sql_' + #dsr.datasource.id + '_' + #dsr.table + '_' + #dsr.query",
condition = "#dsr.pageSize == null || #dsr.pageSize == 0L"
)
*/
@Override
@Override
public
List
<
String
[]>
getData
(
DatasourceRequest
d
atasourceRequest
)
throws
Exception
{
public
List
<
String
[]>
getData
(
DatasourceRequest
d
sr
)
throws
Exception
{
List
<
String
[]>
list
=
new
LinkedList
<>();
List
<
String
[]>
list
=
new
LinkedList
<>();
Connection
connection
=
null
;
Connection
connection
=
null
;
try
{
try
{
connection
=
getConnectionFromPool
(
d
atasourceRequest
);
connection
=
getConnectionFromPool
(
d
sr
);
Statement
stat
=
connection
.
createStatement
();
Statement
stat
=
connection
.
createStatement
();
ResultSet
rs
=
stat
.
executeQuery
(
d
atasourceRequest
.
getQuery
());
ResultSet
rs
=
stat
.
executeQuery
(
d
sr
.
getQuery
());
list
=
fetchResult
(
rs
);
list
=
fetchResult
(
rs
);
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
DataEaseException
.
throwException
(
e
);
DataEaseException
.
throwException
(
e
);
...
...
backend/src/main/java/io/dataease/listener/util/CacheUtils.java
浏览文件 @
d8402663
...
@@ -24,18 +24,19 @@ public class CacheUtils {
...
@@ -24,18 +24,19 @@ public class CacheUtils {
return
element
.
getObjectValue
();
return
element
.
getObjectValue
();
}
}
p
rivate
static
void
put
(
String
cacheName
,
Object
key
,
Object
value
,
Integer
ttl
,
Integer
tti
)
{
p
ublic
static
void
put
(
String
cacheName
,
Object
key
,
Object
value
,
Integer
ttl
,
Integer
tti
)
{
Element
e
=
new
Element
(
key
,
value
);
Element
e
=
new
Element
(
key
,
value
);
//不设置则使用xml配置
//不设置则使用xml配置
if
(
ttl
!=
null
)
if
(
ttl
!=
null
)
{
e
.
setEternal
(
false
);
e
.
setEternal
(
false
);
e
.
setTimeToLive
(
ttl
);
e
.
setTimeToLive
(
ttl
);
}
if
(
tti
!=
null
)
if
(
tti
!=
null
)
e
.
setTimeToIdle
(
tti
);
e
.
setTimeToIdle
(
tti
);
cache
(
cacheName
).
put
(
e
);
cache
(
cacheName
).
put
(
e
);
}
}
p
rivate
static
boolean
remove
(
String
cacheName
,
Object
key
)
{
p
ublic
static
boolean
remove
(
String
cacheName
,
Object
key
)
{
return
cache
(
cacheName
).
remove
(
key
);
return
cache
(
cacheName
).
remove
(
key
);
}
}
...
...
backend/src/main/java/io/dataease/service/chart/ChartViewService.java
浏览文件 @
d8402663
...
@@ -6,6 +6,7 @@ import io.dataease.base.domain.*;
...
@@ -6,6 +6,7 @@ import io.dataease.base.domain.*;
import
io.dataease.base.mapper.ChartViewMapper
;
import
io.dataease.base.mapper.ChartViewMapper
;
import
io.dataease.base.mapper.ext.ExtChartGroupMapper
;
import
io.dataease.base.mapper.ext.ExtChartGroupMapper
;
import
io.dataease.base.mapper.ext.ExtChartViewMapper
;
import
io.dataease.base.mapper.ext.ExtChartViewMapper
;
import
io.dataease.commons.constants.JdbcConstants
;
import
io.dataease.commons.utils.AuthUtils
;
import
io.dataease.commons.utils.AuthUtils
;
import
io.dataease.commons.utils.BeanUtils
;
import
io.dataease.commons.utils.BeanUtils
;
import
io.dataease.commons.utils.CommonBeanFactory
;
import
io.dataease.commons.utils.CommonBeanFactory
;
...
@@ -20,6 +21,7 @@ import io.dataease.datasource.service.DatasourceService;
...
@@ -20,6 +21,7 @@ import io.dataease.datasource.service.DatasourceService;
import
io.dataease.dto.chart.*
;
import
io.dataease.dto.chart.*
;
import
io.dataease.dto.dataset.DataTableInfoDTO
;
import
io.dataease.dto.dataset.DataTableInfoDTO
;
import
io.dataease.i18n.Translator
;
import
io.dataease.i18n.Translator
;
import
io.dataease.listener.util.CacheUtils
;
import
io.dataease.provider.QueryProvider
;
import
io.dataease.provider.QueryProvider
;
import
io.dataease.service.dataset.DataSetTableFieldsService
;
import
io.dataease.service.dataset.DataSetTableFieldsService
;
import
io.dataease.service.dataset.DataSetTableService
;
import
io.dataease.service.dataset.DataSetTableService
;
...
@@ -65,6 +67,10 @@ public class ChartViewService {
...
@@ -65,6 +67,10 @@ public class ChartViewService {
chartView
.
setUpdateTime
(
timestamp
);
chartView
.
setUpdateTime
(
timestamp
);
chartViewMapper
.
insertSelective
(
chartView
);
chartViewMapper
.
insertSelective
(
chartView
);
}
}
Optional
.
ofNullable
(
chartView
.
getId
()).
ifPresent
(
id
->
{
CacheUtils
.
remove
(
JdbcConstants
.
VIEW_CACHE_KEY
,
id
);
});
return
chartView
;
return
chartView
;
}
}
...
@@ -188,6 +194,17 @@ public class ChartViewService {
...
@@ -188,6 +194,17 @@ public class ChartViewService {
}
}
}
}
data
=
datasourceProvider
.
getData
(
datasourceRequest
);
data
=
datasourceProvider
.
getData
(
datasourceRequest
);
/**
* 直连不实用缓存
String key = "provider_sql_"+datasourceRequest.getDatasource().getId() + "_" + datasourceRequest.getTable() + "_" +datasourceRequest.getQuery();
Object cache;
if ((cache = CacheUtils.get(JdbcConstants.JDBC_PROVIDER_KEY, key)) == null) {
data = datasourceProvider.getData(datasourceRequest);
CacheUtils.put(JdbcConstants.JDBC_PROVIDER_KEY,key ,data, null, null);
}else {
data = (List<String[]>) cache;
}
*/
}
else
if
(
table
.
getMode
()
==
1
)
{
// 抽取
}
else
if
(
table
.
getMode
()
==
1
)
{
// 抽取
// 连接doris,构建doris数据源查询
// 连接doris,构建doris数据源查询
Datasource
ds
=
(
Datasource
)
CommonBeanFactory
.
getBean
(
"DorisDatasource"
);
Datasource
ds
=
(
Datasource
)
CommonBeanFactory
.
getBean
(
"DorisDatasource"
);
...
@@ -202,7 +219,15 @@ public class ChartViewService {
...
@@ -202,7 +219,15 @@ public class ChartViewService {
}
else
{
}
else
{
datasourceRequest
.
setQuery
(
qp
.
getSQL
(
tableName
,
xAxis
,
yAxis
,
customFilter
,
extFilterList
));
datasourceRequest
.
setQuery
(
qp
.
getSQL
(
tableName
,
xAxis
,
yAxis
,
customFilter
,
extFilterList
));
}
}
data
=
datasourceProvider
.
getData
(
datasourceRequest
);
// String key = "provider_sql_"+datasourceRequest.getDatasource().getId() + "_" + datasourceRequest.getTable() + "_" +datasourceRequest.getQuery();
// 定时抽取使用缓存
Object
cache
;
if
((
cache
=
CacheUtils
.
get
(
JdbcConstants
.
VIEW_CACHE_KEY
,
id
))
==
null
)
{
data
=
datasourceProvider
.
getData
(
datasourceRequest
);
CacheUtils
.
put
(
JdbcConstants
.
VIEW_CACHE_KEY
,
id
,
data
,
null
,
null
);
}
else
{
data
=
(
List
<
String
[]>)
cache
;
}
}
}
if
(
StringUtils
.
containsIgnoreCase
(
view
.
getType
(),
"pie"
)
&&
data
.
size
()
>
1000
)
{
if
(
StringUtils
.
containsIgnoreCase
(
view
.
getType
(),
"pie"
)
&&
data
.
size
()
>
1000
)
{
data
=
data
.
subList
(
0
,
1000
);
data
=
data
.
subList
(
0
,
1000
);
...
...
backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java
浏览文件 @
d8402663
...
@@ -5,6 +5,8 @@ import io.dataease.base.domain.*;
...
@@ -5,6 +5,8 @@ import io.dataease.base.domain.*;
import
io.dataease.base.mapper.DatasetTableMapper
;
import
io.dataease.base.mapper.DatasetTableMapper
;
import
io.dataease.base.mapper.DatasetTableTaskMapper
;
import
io.dataease.base.mapper.DatasetTableTaskMapper
;
import
io.dataease.base.mapper.DatasourceMapper
;
import
io.dataease.base.mapper.DatasourceMapper
;
import
io.dataease.base.mapper.ext.ExtChartViewMapper
;
import
io.dataease.commons.constants.JdbcConstants
;
import
io.dataease.commons.constants.JobStatus
;
import
io.dataease.commons.constants.JobStatus
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.UpdateType
;
import
io.dataease.commons.constants.UpdateType
;
...
@@ -22,6 +24,7 @@ import io.dataease.datasource.provider.ProviderFactory;
...
@@ -22,6 +24,7 @@ import io.dataease.datasource.provider.ProviderFactory;
import
io.dataease.datasource.request.DatasourceRequest
;
import
io.dataease.datasource.request.DatasourceRequest
;
import
io.dataease.dto.dataset.DataTableInfoDTO
;
import
io.dataease.dto.dataset.DataTableInfoDTO
;
import
io.dataease.exception.DataEaseException
;
import
io.dataease.exception.DataEaseException
;
import
io.dataease.listener.util.CacheUtils
;
import
io.dataease.provider.QueryProvider
;
import
io.dataease.provider.QueryProvider
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.io.FileUtils
;
import
org.apache.commons.io.FileUtils
;
...
@@ -96,6 +99,9 @@ public class ExtractDataService {
...
@@ -96,6 +99,9 @@ public class ExtractDataService {
@Resource
@Resource
private
DatasetTableTaskMapper
datasetTableTaskMapper
;
private
DatasetTableTaskMapper
datasetTableTaskMapper
;
@Resource
private
ExtChartViewMapper
extChartViewMapper
;
private
static
String
lastUpdateTime
=
"${__last_update_time__}"
;
private
static
String
lastUpdateTime
=
"${__last_update_time__}"
;
private
static
String
currentUpdateTime
=
"${__current_update_time__}"
;
private
static
String
currentUpdateTime
=
"${__current_update_time__}"
;
private
static
String
separator
=
"|DE|"
;
private
static
String
separator
=
"|DE|"
;
...
@@ -277,7 +283,15 @@ public class ExtractDataService {
...
@@ -277,7 +283,15 @@ public class ExtractDataService {
}
}
}
}
break
;
break
;
}
}
//侵入式清除下属视图缓存
List
<
String
>
viewIds
=
extChartViewMapper
.
allViewIds
(
datasetTableId
);
if
(
CollectionUtils
.
isNotEmpty
(
viewIds
)){
viewIds
.
forEach
(
viewId
->
{
CacheUtils
.
remove
(
JdbcConstants
.
VIEW_CACHE_KEY
,
viewId
);
});
}
}
}
private
void
updateTableStatus
(
String
datasetTableId
,
DatasetTable
datasetTable
,
JobStatus
completed
,
Long
execTime
)
{
private
void
updateTableStatus
(
String
datasetTableId
,
DatasetTable
datasetTable
,
JobStatus
completed
,
Long
execTime
)
{
...
...
backend/src/main/resources/ehcache/ehcache.xml
浏览文件 @
d8402663
...
@@ -82,5 +82,17 @@
...
@@ -82,5 +82,17 @@
<cacheEventListenerFactory
class=
"io.dataease.listener.LicCacheEventListener"
/>
<cacheEventListenerFactory
class=
"io.dataease.listener.LicCacheEventListener"
/>
</cache>
</cache>
<cache
name=
"jdbc_provider_cache"
eternal=
"false"
maxElementsInMemory=
"100"
maxElementsOnDisk=
"10000"
overflowToDisk=
"true"
diskPersistent=
"true"
timeToIdleSeconds=
"28800"
timeToLiveSeconds=
"86400"
memoryStoreEvictionPolicy=
"LRU"
/>
</ehcache>
</ehcache>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论