분류 전체보기 221

[RAG] 정리

이전 프젝 경험 기반으로 이해중이다https://github.com/ekdud0529/Meme  Azure OpenAIcontents filtering을 포함해 암호화, 인증, 역할기반 접근제어 등을 지원한다.VNET을 구성이 가능하다.기업에서 보안 걱정 없이 안전하게 chatGPT를 사용할 수 있게 해준다.contents filtering이란, 사용자에게 답변을 줄 때 답변을 필터링하는 것이다.사용자 질의 -> gpt -> 답변 - (필터링) - > 사용자 VNETprivate endpointprivate link Fine-tuning사전에 학습된 모델 (pre-trained model)을 새로운 (보통 더 작은) 데이터셋에 맞추어 추가 학습을 수행하는 과정 RAG (Retrieval-Augmented..

회사 2025.03.06

[SQL Server] String -> NVARCHAR / VARCHAR

문제 상황디비버에서 쿼리를 조회할 때 보다 로컬을 실행해 화면에서 조회할 때 시간이 훨씬 오래걸렸다.단순히 노트북 사양 문제인가 했는데, SQL Server 문제일 수도 있는 부분을 수정하니, 속도가 일부 개선되었다. SQL Server JDBC Driver는 String type의 파라미터를 기본적으로 NVARCHAR로 매핑한다.이 경우 VARCHAR 타입의 컬럼인데 VARCHAR가 아닌, NVARCHAR로 인식되기 때문에 인덱스를 타지 않고 성능저하가 발생하게 된다.MS 공식문서에 따르면 데이터 형식 우선순위가 있다고 한다.그래서 우선순위가 높은 쪽으로 묵시적 형변환이 일어나는 것이다. 일전에 다른 문제에서 접한 적이 있는데, 아래와 같은 쿼리를 작성했을 때WHERE 123 = '123'우선순위가 높..

회사/DB 2025.02.21

[MSSQL] CROSS APPLY, OUTER APPLY

CROSS APPLY와 OUTER APPLY는 JOIN과 동일한 결과값을 반환할 수 있다.하지만, JOIN과는 다른 실행계획을 가질 수 있고, JOIN 으로는 수행 불가능한 구문을 수행시켜주기도 한다.서브 쿼리에 외부 테이블의 컬럼을 인자로 사용할 수 있다.테이블 반환함수의 인자값으로, 외부 테이블의 컬럼을 적용해 JOIN과 같은 결과값을 낼 수 있다.상황에 따라 JOIN보다 더 좋은 성능을 발휘할 수 있다. CROSS APPLYSELECT * FROM TBL_A CROSS APPLY ( SELECT * FROM TBL_B ) WHERE ...  OUTER APPLYSELECT * FROM TBL_A A OUTER APPLY ( SELECT * FROM TBL_B WHERE A.COL1..

회사/DB 2025.02.04

[SQLD] 2.2.4~8 SQL 활용

윈도우 함수윈도우함수 개요행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 WINDOW FUNCTION종류순위(RANK) 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER집계(AGGREGATE) 관련 함수 : SUM, MAX, COUNT 등그룹 내 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT선형 분석을 포함한 통계분석 함수 : CORR, COVAR_POP, STDDEV 등WINDOW FUCNTION SYNTAX윈도우 함수에는 OVER 문구가 키워드로 필수 포함된다.SELECT WINDOW_FUNCTION (...) OVER ([PART..

학교/SQLD 2025.01.06

[SQLD] 2.2.1~3 SQL 활용

서브쿼리하나의 SQL 문에 포함돼 있는 또 다른 SQL 문서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있지만, 메인쿼리는 서브 쿼리의 칼럼을 사용할 수 없다.중첩, 스칼라 서브 쿼리에서는 ORDER BY를 사용하지 못한다.조인이 아닌 서브 쿼리를 사용해 결과집합을 원하는 레벨로 생성할 수 있다. p.280단일 행 서브쿼리 : 실행결과가 1건다중 행 서브쿼리 : 실행 결과가 여러건, 다중행 비교 연산자 사용(IN, ALL, ANY ... )다중 컬럼 서브쿼리 : 여러 컬럼 반환 비연관 서브쿼리 (Un-Correlated)서브 쿼리가 메인 쿼리 컬럼을 갖지 않는 형태의 서브쿼리메인 쿼리에 값을 제공하기 위한 목적으로 사용한다. 연관 서브쿼리 (Correlated)서브쿼리가 메인 쿼리 칼럼을 갖고 있는 형태의..

학교/SQLD 2024.12.23

[SQLD] 2.1 SQL 기본

데이터베이스데이터베이스특정 기업이나 조직, 개인이 필요에 따라 데이터를 일정한 형태로 저장해 놓은 것DBMS(Database Management System)효율적인 데이터 관리와 예기치 못한 사건으로 인한 데이터 손상을 피하고, 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어 SQL (Structured Query Language)데이터 정의, 데이터 조작, 데이터를 제어하기 위해 사용하는 언어명령어 종류명령어데이터 조작어(DML, Data Manipulation Language)SELECTINSERTUPDATEDELETE데이터 정의어(DDL, Data Definition Language)CREATEALTERDROPRENAME데이터 제어어(DCL, Data Control Language)GRAN..

학교/SQLD 2024.12.19

[SQLD] 1.2.2 조인 / 1.2.3 모델이 표현하는 트랜잭션의 이해 / 1.2.4 Null 속성의 이해 / 1.2.5 본질식별자 vs. 인조식별자

조인관계를 맺는다=> 부모의 식별자를 자식의 일반속성 || 식별자로 상속하는 것이다.조인 (Join)부모에게 상속받은 속성을 매핑키로 활용하여 데이터를 결합해 보는 것이다. 계층형 데이터 모델관계는 자기 자신에게도 발생할 수 있다. 이 엔터티는 계층형 데이터 모델에 해당한다.계층형 데이터 모델이란? 말 그대로 계층구조를 가진 데이터이다.MGR 속성은 각 사원 관리자의 사원번호를 의미한다.내가 다니는 회사로 생각해보겠다.나는 사원이고 소속된 팀이 있다. 나의 관리자는 팀장님이다. 우리 팀은 센터에 소속되어 있다. 팀장님의 관리자는 센터장님이시다. 각 사원들의 관리자를 찾기 위해선? 이 EMP 에 대해 셀프 조인 (Self-Join) 을 해야 관리자의 데이터를 가져올 수 있는 것이다.속성명만 다를뿐 MGR ..

학교/SQLD 2024.12.19

[SQLD] 1.2.1 정규화

제 1 정규형 :  모든 속성은 반드시 하나의 값을 가져야 한다.다중 값 문제[연락처] 라는 속성이 있다고 가정하자.집전화번호, 휴대폰 번호 1, 2, 3,... 등 다중값(multivalued)이 들어갈수 있을것이다.이름연락처만쥬010-1234-1234, 02-1234-1234이 경우 어떤 번호가 무엇인지 알 수 없다.즉, 원하는 속성값을 추출하기 어렵다.명확하지 않은 속성은 다른 유형의 데이터를 포함할 수도 있어 본연의 의미가 퇴색될 수 있다.이와 같이 데이터를 관리한다면개발의 복잡성 증가속성의 의미 퇴색장기적으로 불안정한 데이터 구조 양산개발의 오류 및 데이터 품질 문제를 야기할 수 있다.위와 같은 문제는 엔터티를 추가해 다중값에 대한 문제를 해결할 수 있다. (부모(사람), 자식(연락처) 테이블로..

학교/SQLD 2024.12.18

[DB] Index와 Column, 비교연산자

ColumnMybatis에서 WHERE절을 작성할 때, COLUMN_A = #{VAR_A}를 작성하는데IFNULL(COLUMN_A, 'A') = #{VAR_A}라고 작성하는 경우가 있을 것이다.이처럼 조건식에서 왼쪽 컬럼의 값을 수정할 경우, 이 컬럼이 만약 INDEX에 설정된 컬럼이라면 INDEX를 타지 않게 된다.인덱스를 타지 않는다면 쿼리 속도에 영향을 미치겠죠?쿼리를 작성할 때, 항상 PK와 인덱스에 해당하는 컬럼인지를 고려해서 작성하자. 비교연산자비교연산자를 사용할 땐, DATA TYPE을 명시적으로 맞춰주다.만약, 비교하는 DATA TYPE이 다르다면, 어떤 컬럼의 TYPE을 바꿔서 맞출 지 알 수 없다.무조건 왼쪽과 오른쪽 중 한쪽으로 맞추는 것이 아니기 때문이다.그렇다면 의도했던 결과가 나..

회사/DB 2024.12.16

[Test]

테스트를 할 때에는1. Logic 확인하기한 가지를 열번하는 것 보다, 열 가지를 한 번씩 해보는게 더 나을 수 있다.개발자는 어떻게 사용하는지 아니까 조심해서 테스트하는데, 사용자는 이걸왜? 하는 방법으루 한다. 그러니까 테스트는 다른 사람들도 해주는게 좋다.2. 부하 테스트사용자 Max 추정치 * 2 정도로 해보는게 좋다. +++빠른 속도보다는, 데이터 갯수에 상관없이 일정한 속도로 동작하는게 중요하다.

회사 2024.12.16