Skip to content

Commit 56dc2b0

Browse files
hefanlihhhhsc701
andauthored
refactor: replace the database from mysql to pgsql (#236)
* refactor: replace the database from mysql to pgsql * refactor: replace the database from mysql to pgsql * refactor: merge the databases of DataMate and LabelStudio * refactor: merge the databases of DataMate and LabelStudio * fix: resolve the conflict * feat: 适配pgsql * fix: resolve the annotation task bug * fix: fix the system param presetting data --------- Co-authored-by: hhhhsc <1710496817@qq.com>
1 parent 6b7e280 commit 56dc2b0

54 files changed

Lines changed: 3139 additions & 2429 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ VALID_SERVICE_TARGETS := datamate backend frontend runtime backend-python databa
283283
exit 1; \
284284
fi
285285
@if [ "$*" = "label-studio" ]; then \
286-
docker compose -f deployment/docker/datamate/docker-compose.yml rm -f -s label-studio pg-db; \
286+
docker compose -f deployment/docker/datamate/docker-compose.yml rm -f -s label-studio; \
287287
elif [ "$*" = "mineru" ]; then \
288288
docker compose -f deployment/docker/datamate/docker-compose.yml rm -f -s datamate-mineru; \
289289
elif [ "$*" = "data-juicer" ] || [ "$*" = "dj" ]; then \

backend/pom.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<spring-cloud.version>2025.0.0</spring-cloud.version>
2323
<spring-ai.version>1.0.0-RC1</spring-ai.version>
2424
<mysql.version>8.0.33</mysql.version>
25-
<postgresql.version>42.6.0</postgresql.version>
25+
<postgresql.version>42.7.7</postgresql.version>
2626
<redis.version>3.2.0</redis.version>
2727
<elasticsearch.version>8.11.0</elasticsearch.version>
2828
<junit.version>5.10.0</junit.version>
@@ -108,6 +108,12 @@
108108
<artifactId>jakarta.persistence-api</artifactId>
109109
<version>${jakarta.persistence.version}</version>
110110
</dependency>
111+
<!-- Database: postgresql -->
112+
<dependency>
113+
<groupId>org.postgresql</groupId>
114+
<artifactId>postgresql</artifactId>
115+
<version>${postgresql.version}</version>
116+
</dependency>
111117
<!-- MyBatis version alignment -->
112118
<dependency>
113119
<groupId>com.baomidou</groupId>
@@ -129,12 +135,6 @@
129135
<version>${lombok.version}</version>
130136
</dependency>
131137

132-
<dependency>
133-
<groupId>com.mysql</groupId>
134-
<artifactId>mysql-connector-j</artifactId>
135-
<version>${mysql.version}</version>
136-
</dependency>
137-
138138
<dependency>
139139
<groupId>org.apache.poi</groupId>
140140
<artifactId>poi</artifactId>

backend/services/data-annotation-service/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@
3030
<groupId>org.springframework.boot</groupId>
3131
<artifactId>spring-boot-starter-websocket</artifactId>
3232
</dependency>
33-
<dependency>
34-
<groupId>com.mysql</groupId>
35-
<artifactId>mysql-connector-j</artifactId>
36-
<version>${mysql.version}</version>
37-
</dependency>
3833
<!-- OpenAPI Dependencies -->
3934
<dependency>
4035
<groupId>org.springdoc</groupId>

backend/services/data-cleaning-service/pom.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@
5353
<groupId>org.openapitools</groupId>
5454
<artifactId>jackson-databind-nullable</artifactId>
5555
</dependency>
56-
<dependency>
57-
<groupId>com.mysql</groupId>
58-
<artifactId>mysql-connector-j</artifactId>
59-
</dependency>
6056
<dependency>
6157
<groupId>org.apache.commons</groupId>
6258
<artifactId>commons-compress</artifactId>

backend/services/data-cleaning-service/src/main/java/com/datamate/cleaning/infrastructure/persistence/mapper/OperatorInstanceMapper.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111

1212
@Mapper
1313
public interface OperatorInstanceMapper extends BaseMapper<OperatorInstance> {
14-
@Select("SELECT o.operator_id as id, o.operator_name as name, description, version, inputs, outputs, runtime, " +
15-
" settings, created_at, updated_at, " +
16-
"GROUP_CONCAT(category_id ORDER BY created_at DESC SEPARATOR ',') AS categories " +
17-
"FROM t_operator_instance toi LEFT JOIN v_operator o ON toi.operator_id = o.operator_id " +
14+
@Select("SELECT o.operator_id as id, o.operator_name as name, o.description, o.version, o.inputs, o.outputs, " +
15+
"o.runtime, o.settings, o.created_at, o.updated_at, " +
16+
"STRING_AGG(CAST(category_id AS TEXT), ',' ORDER BY o.created_at DESC) AS categories " +
17+
"FROM t_operator_instance toi " +
18+
"LEFT JOIN v_operator o ON toi.operator_id = o.operator_id " +
1819
"WHERE toi.instance_id = #{instanceId} " +
19-
"GROUP BY o.operator_id, o.operator_name, description, version, inputs, outputs, runtime," +
20-
" settings, created_at, updated_at, op_index " +
20+
"GROUP BY o.operator_id, o.operator_name, o.description, o.version, o.inputs, o.outputs, o.runtime, " +
21+
" o.settings, o.created_at, o.updated_at, toi.op_index " +
2122
"ORDER BY toi.op_index")
2223
List<OperatorView> findOperatorByInstanceId(String instanceId);
2324
}

backend/services/data-evaluation-service/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@
2626
<groupId>org.springframework.boot</groupId>
2727
<artifactId>spring-boot-starter-web</artifactId>
2828
</dependency>
29-
<dependency>
30-
<groupId>com.mysql</groupId>
31-
<artifactId>mysql-connector-j</artifactId>
32-
<version>${mysql.version}</version>
33-
</dependency>
3429
<dependency>
3530
<groupId>org.springframework.boot</groupId>
3631
<artifactId>spring-boot-starter-test</artifactId>

backend/services/data-management-service/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@
3030
<groupId>org.springframework.boot</groupId>
3131
<artifactId>spring-boot-starter-data-redis</artifactId>
3232
</dependency>
33-
<dependency>
34-
<groupId>com.mysql</groupId>
35-
<artifactId>mysql-connector-j</artifactId>
36-
<version>${mysql.version}</version>
37-
</dependency>
3833
<dependency>
3934
<groupId>org.springframework.boot</groupId>
4035
<artifactId>spring-boot-starter-test</artifactId>

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
import com.datamate.datamanagement.infrastructure.persistence.repository.DatasetRepository;
1919
import com.datamate.datamanagement.interfaces.converter.DatasetConverter;
2020
import com.datamate.datamanagement.interfaces.dto.*;
21+
import com.fasterxml.jackson.core.JsonProcessingException;
22+
import com.fasterxml.jackson.databind.ObjectMapper;
23+
import com.fasterxml.jackson.databind.SerializationFeature;
24+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
2125
import lombok.RequiredArgsConstructor;
2226
import lombok.extern.slf4j.Slf4j;
2327
import org.apache.commons.collections4.CollectionUtils;
@@ -64,11 +68,7 @@ public Dataset createDataset(CreateDatasetRequest createDatasetRequest) {
6468
Dataset dataset = DatasetConverter.INSTANCE.convertToDataset(createDatasetRequest);
6569
dataset.initCreateParam(datasetBasePath);
6670
// 处理标签
67-
Set<Tag> processedTags = Optional.ofNullable(createDatasetRequest.getTags())
68-
.filter(CollectionUtils::isNotEmpty)
69-
.map(this::processTagNames)
70-
.orElseGet(HashSet::new);
71-
dataset.setTags(processedTags);
71+
dataset.setTags(processTagNames(createDatasetRequest.getTags()));
7272
datasetRepository.save(dataset);
7373

7474
//todo 需要解耦这块逻辑
@@ -146,7 +146,7 @@ public PagedResponse<DatasetResponse> getDatasets(DatasetPagingQuery query) {
146146
/**
147147
* 处理标签名称,创建或获取标签
148148
*/
149-
private Set<Tag> processTagNames(List<String> tagNames) {
149+
private String processTagNames(List<String> tagNames) {
150150
Set<Tag> tags = new HashSet<>();
151151
for (String tagName : tagNames) {
152152
Tag tag = tagMapper.findByName(tagName);
@@ -161,7 +161,16 @@ private Set<Tag> processTagNames(List<String> tagNames) {
161161
tagMapper.updateUsageCount(tag.getId(), tag.getUsageCount());
162162
tags.add(tag);
163163
}
164-
return tags;
164+
ObjectMapper mapper = new ObjectMapper();
165+
try {
166+
mapper.registerModule(new JavaTimeModule());
167+
// 可选:配置日期时间格式
168+
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
169+
return mapper.writeValueAsString(tags);
170+
} catch (JsonProcessingException e) {
171+
log.warn("Parse tags to json error.");
172+
return null;
173+
}
165174
}
166175

167176
/**

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/domain/model/dataset/Dataset.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.baomidou.mybatisplus.annotation.TableField;
44
import com.baomidou.mybatisplus.annotation.TableName;
5-
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
65
import com.datamate.common.domain.model.base.BaseEntity;
76
import com.datamate.datamanagement.common.enums.DatasetStatusType;
87
import com.datamate.datamanagement.common.enums.DatasetType;
@@ -67,8 +66,7 @@ public class Dataset extends BaseEntity<String> {
6766
/**
6867
* 标签列表, JSON格式
6968
*/
70-
@TableField(typeHandler = JacksonTypeHandler.class)
71-
private Collection<Tag> tags = new HashSet<>();
69+
private String tags;
7270
/**
7371
* 额外元数据,JSON格式
7472
*/

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/converter/DatasetConverter.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@
44
import com.datamate.datamanagement.domain.model.dataset.Dataset;
55
import com.datamate.datamanagement.domain.model.dataset.DatasetFile;
66
import com.datamate.datamanagement.domain.model.dataset.FileTag;
7-
import com.datamate.datamanagement.interfaces.dto.CreateDatasetRequest;
8-
import com.datamate.datamanagement.interfaces.dto.DatasetFileResponse;
9-
import com.datamate.datamanagement.interfaces.dto.DatasetResponse;
10-
import com.datamate.datamanagement.interfaces.dto.UploadFileRequest;
7+
import com.datamate.datamanagement.domain.model.dataset.Tag;
8+
import com.datamate.datamanagement.interfaces.dto.*;
9+
import com.fasterxml.jackson.core.JsonProcessingException;
10+
import com.fasterxml.jackson.core.type.TypeReference;
11+
import com.fasterxml.jackson.databind.ObjectMapper;
12+
import com.fasterxml.jackson.databind.SerializationFeature;
13+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
1114
import org.apache.commons.collections4.CollectionUtils;
15+
import org.apache.commons.lang3.StringUtils;
1216
import org.mapstruct.Mapper;
1317
import org.mapstruct.Mapping;
1418
import org.mapstruct.Named;
1519
import org.mapstruct.factory.Mappers;
1620

17-
import java.util.HashMap;
18-
import java.util.List;
19-
import java.util.Map;
21+
import java.util.*;
2022

2123
/**
2224
* 数据集文件转换器
@@ -32,6 +34,7 @@ public interface DatasetConverter {
3234
@Mapping(source = "sizeBytes", target = "totalSize")
3335
@Mapping(source = "path", target = "targetLocation")
3436
@Mapping(source = "files", target = "distribution", qualifiedByName = "getDistribution")
37+
@Mapping(source = "tags", target = "tags", qualifiedByName = "getDatasetTags")
3538
DatasetResponse convertToResponse(Dataset dataset);
3639

3740
/**
@@ -88,4 +91,28 @@ default Map<String, Map<String, Long>> getDistribution(List<DatasetFile> dataset
8891
}
8992
return distribution;
9093
}
94+
95+
/**
96+
* 获取数据集标签
97+
*
98+
* @param datasetTag 数据集标签
99+
* @return 标签
100+
*/
101+
@Named("getDatasetTags")
102+
default List<TagResponse> getDatasetTags(String datasetTag) {
103+
List<TagResponse> tagResponses = new ArrayList<>();
104+
if (StringUtils.isBlank(datasetTag)) {
105+
return tagResponses;
106+
}
107+
ObjectMapper mapper = new ObjectMapper();
108+
try {
109+
mapper.registerModule(new JavaTimeModule());
110+
// 可选:配置日期时间格式
111+
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
112+
return mapper.readValue(datasetTag, new TypeReference<List<Tag>>() {
113+
}).stream().map(TagConverter.INSTANCE::convertToResponse).toList();
114+
} catch (Exception e) {
115+
return Collections.emptyList();
116+
}
117+
}
91118
}

0 commit comments

Comments
 (0)