SQL 프로젝트의 아버지: SQL 및 시뮬레이션 데이터를 빠르게 생성하여 개발 및 테스트 효율성을 크게 향상시킵니다!
프런트엔드 및 백엔드 풀 스택 프로젝트 프로그래머 Yupi 작성
만들기가 쉽지 않으니 상업적 이용이나 재판매용으로 사용하지 말아주세요! ! !
온라인 체험: http://sqlfather.yupi.icu
비디오 데모(사용 튜토리얼): https://www.bilibili.com/video/BV1eP411N7B7/
이 프로젝트가 도움이 된다고 생각하신다면, UP 소유자에게 팔로우와 3개의 연속 링크를 제공하는 것이 가장 큰 지원입니다. 감사합니다!
프런트엔드 코드 저장소: https://github.com/liyupi/sql-father-frontend-public
백엔드 코드 저장소: https://github.com/liyupi/sql-father-backend-public
️ 나만의 프로그래밍 지식 행성에서 이 프로젝트의 창의적인 아이디어 + 기술 선택 + 시스템 설계 + 소스 코드 해석 + 이력서 작성 방법에 대해 자세히 설명했습니다. 이 프로젝트를 이력서에 작성하거나 깊이 연구하십시오. , My Planet에 가입하여 시청해 보세요.
프로젝트의 시작은 유피가 프로젝트를 개발할 때 테이블을 생성하고 데이터를 생성하기 위해 SQL을 반복적으로 작성하는 수고를 해결하고 싶었는데, 모두가 함께 배우고 개선할 수 있도록 오픈소스로 만들었습니다~
상상해 보십시오. 새 프로젝트를 수행할 때 테이블을 생성하거나 데이터를 생성하기 위해 SQL을 작성할 필요 없이 가짜 데이터가 포함된 테이블을 직접 얻을 수 있다면 얼마나 좋을까요?
일부 학생들은 왜 이 프로젝트를 SQL Mother라고 부르지 않았는지 물었습니다. 그렇다면 왜 상속을 부모 클래스라고 부르는지 물어보겠습니다.
프런트엔드, 백엔드, 테스트, 데이터 개발, 데이터 과학 또는 연구생이든 관계없이 이 도구가 도움이 될 것이라고 믿습니다!
주요 응용 시나리오는 다음과 같습니다.
1) 시각적인 양식을 작성하여 테이블 생성 문, 시뮬레이션 데이터 및 코드를 빠르게 생성하고 반복 작업에 작별을 고하세요!
2) 여러 가지 빠른 가져오기 방법을 지원합니다. 예를 들어 이미 만들어진 데이터 테이블이 있는 경우 한 번의 클릭으로 테이블 생성 문을 직접 가져오고 시뮬레이션된 데이터를 생성할 수 있습니다. 또한 Excel 테이블을 직접 가져와 테이블 생성을 빠르게 완료할 수도 있습니다. 몇 단어만 입력하면 테이블과 데이터가 자동으로 생성됩니다!
3) 시뮬레이션 데이터 생성을 위한 여러 규칙을 지원합니다. 예를 들어 고정값, 임의값, 정규식, 증분값, 특정 범위 내에서 임의값을 생성하는 어휘 선택까지 지원합니다!
4) 어휘, 테이블 디자인, 현장 정보 공유를 지원합니다. 다른 학생들의 도서관 테이블 디자인을 배우거나 참고할 수 있으며, 기성 도서관 테이블과 필드를 직접 사용하여 원클릭으로 2차 개발을 생성하거나 수행할 수 있습니다.
5) 기성어휘를 직접 활용하여 사전을 구축할 수도 있고, 연구용 데이터셋으로 활용하여 어휘의 2차 개선도 지원 가능합니다!
프로젝트 자체에는 완전한 기능(사용자 프론트엔드와 관리 백엔드로 구분됨)이 있고 온라인 표준을 충족하며 명확한 아키텍처 설계와 표준화된 디렉토리 구조가 있습니다.
프론트 엔드는 복잡한 중첩 및 동적 및 축소 가능한 양식을 사용하고 백엔드는 다양한 주류 디자인 패턴, AOP 측면 인증 등을 사용하므로 친구가 배울 가치가 있습니다.
그리고 선배님들의 조언 부탁드립니다.
주요 기술:
종속 라이브러리:
주요 기술:
종속 라이브러리:
종속성을 설치합니다.
npm run install
달리다:
npm run dev
팩:
npm run build
주로 시스템의 전체 아키텍처와 핵심 디자인을 공유하며 전통적인 웹 개발 부분에 대해서는 너무 많이 소개하지 않습니다.
핵심 디자인 컨셉: 각 입력 방식을 명확한 Schema로 통일하고, Schema를 기반으로 다양한 형태의 콘텐츠를 생성합니다.
아키텍처 설계 다이어그램은 다음과 같습니다. 즉, 모든 입력 => 통합 스키마 => 모든 출력입니다.
시스템은 다음과 같은 핵심 모듈로 구분되며, 각 모듈에는 명확한 책임이 있습니다.
코어 모듈의 코드는 백엔드 코어 디렉터리에 있습니다.
핵심 클래스: TableSchemaBuilder, 이 기능은 다양한 매개변수를 TableSchema 개체로 수렴하는 것입니다.
다음 메서드가 포함되어 있습니다.
그 중 buildFromSql(SQL 기반 스키마 생성)은 Druid 데이터베이스 연결 풀과 함께 제공되는 구문 분석기를 사용하는데 이는 매우 강력합니다. (일반적으로 파서 같은 것을 직접 작성하면 안 됩니다. 이때 여러 프로젝트를 수행할 수 있으며 작성하는 것이 다른 사람들만큼 사용하기 쉽지 않습니다.)
테이블 및 필드 정보를 저장하는 데 사용되며 구조는 다음과 같습니다.
{
"dbName" : "库名" ,
"tableName" : " test_table " ,
"tableComment" : "表注释" ,
"mockNum" : 20 ,
"fieldList" : [{
"fieldName" : " username " ,
"comment" : "用户名" ,
"fieldType" : " varchar(256) " ,
"mockType" : "随机" ,
"mockParams" : "人名" ,
"notNull" : true ,
"primaryKey" : false ,
"autoIncrement" : false
}]
}
각 빌드 유형을 Builder(core/builder 디렉터리)로 정의합니다.
그 중 SQL 코드 생성기(SqlBuilder)의 경우 다양한 데이터베이스 유형(전략 모드)을 지원하기 위해 방언을 사용하고, 방언 인스턴스를 생성하기 위해 싱글톤 모드 + 팩토리 모드를 사용합니다.
Java의 경우 FreeMarker 템플릿 엔진을 사용하여 프런트엔드 코드 생성기(JavaCodeBuilder, FrontendCodeBuilder)가 생성됩니다. 템플릿 코드는 다음과 같습니다.
각 생성 규칙은 Generator로 정의되며 DataGeneratorFactory(팩토리 모드)는 여러 Generator 인스턴스를 균일하게 생성하고 관리하는 데 사용됩니다.
dataFaker 라이브러리를 사용하여 무작위 데이터 생성(RandomDataGenerator)을 구현합니다.
Generex 라이브러리를 사용하여 정규식 데이터 생성(RuleDataGenerator)을 구현합니다.
Facade 패턴을 사용하여 다양한 생성 유형을 집계하고 통합된 생성 호출 및 확인 방법을 제공합니다.
동의어 사전, 테이블 정보, 필드 정보 공유 등 실제로는 이러한 엔터티를 추가, 삭제, 수정, 조회하는 웹 서비스이므로 자세히 설명하지 않겠습니다.
이 프로젝트에 대한 완전하고 자세한 설명을 얻고 싶다면 Yupi의 프로그래밍 지식 플래닛에 오신 것을 환영합니다. 이것은 Yupi의 프로그래밍 학습 서클입니다. 서클에서는 모든 사람이 이 프로젝트를 0에서 1로 분석하고 해석하고 모든 사람의 질문에 일대일로 답변하도록 유도합니다. 독립적으로 하나를 수행할 수 있을 뿐만 아니라 이 프로젝트를 이력서에 포함하는 방법도 알려줄 것입니다. 프로젝트 경험 + 1.
모든 친구들의 참여를 환영하며 먼저 다음 내용을 주의 깊게 읽어보시기 바랍니다.
부분 어휘 출처: https://github.com/fighting41love/funNLP
샘플 테이블 정보 출처: https://open.yesapi.cn/list1.html