본문 바로가기

DataBase

[Milvus] Milvus란? M1 Mac Milvus 개발환경 구성하기 Milvus? - 대규모 벡터 데이터를 위한 오픈소스 벡터 데이터베이스 관리 시스템으로 머신러닝, 딥러닝, 데이터 분석 등과 같은 분야에서 생성되는 다차원 벡터 데이터를 효율적으로 저장하고 검색한다. - 벡터 간의 거리나 유사도를 기준으로 데이터를 검색하는 데 특화되어 있으며, 확장성이 뛰어나 대규모 데이터 세트를 쉽게 처리할 수 있으며, 클러스터 모드와 단일 노드 모드 모두를 지원한다. 자세한 사항은 공식홈페이지에 알아보기 쉽게 정리되어 있다. https://milvus.io/docs Milvus documentation Milvus documentation for Milvus v2.3.x milvus.io - 설치 및 사용법은 M1 Mac을 기준으로 진행함 1 ) Docker 설치 - Milvus s.. 더보기
[PGvector] PGvector란? Mac Python 개발환경 구성하기 PG_vector - PostgreSQL과 함께 사용할 수 있는 Extension 중 하나로 벡터 데이터를 저장, 쿼리 및 분석하기 위한 기능을 제공한다. 벡터 데이터는 숫자 및 범주형 데이터의 조합으로 구성되며, 주로 머신 러닝, 데이터 분석 및 유사성 검색과 같은 작업에 유용함 https://github.com/pgvector/pgvector GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres Open-source vector similarity search for Postgres. Contribute to pgvector/pgvector development by creating an account on GitH.. 더보기
[DB] Single Block I/O vs Multi Block I/O SQL 서적을 읽던 중 Single Bolck I/O와 Multi Block I/O에 관한 설명을 접하게 되었고 지금까지 개발을 하면서 지금까지 생각해 왔던 것과는 다른 새로운 개념을 알게 되어 글로 작성하였다. DB에서 I/O란? - SQL이 느려지는 이유는 보통 디스크 I/O 때문이라고 보면 된다. - 책에서는 I/O = 잠(Sleep)이라고 표현했다. - OS 또는 I/O 서브시스템이 I/O를 처리하는 동안 프로세스는 잠을 자기 때문이다. 즉, I/O를 처리하는 동안 다음 동작을 행할 수 없으니 텀이 발생하게 되고 이것을 "잠"이라고 표현한 것 같다. Single Block I/O? - 한 번에 한 블록씩 요청해서 메모리에 적재하는 방식 - 인덱스가 보통 Single Block I/O 방식으로 디스.. 더보기
[ SQL ] B-Tree 와 Index B-Tree, B-+Tree 란? ( Balanced Tree ) - 2진 트리의 확장, 리프 레벨의 좌우 균형을 유지 - 세 가지 종류로 나눠지며, 일반적인 DBMS에서는 주로 B-+Tree와 B-*Tree를 사용 - B-트리의 창시자인 루돌프 바이어는 ‘B’가 무엇을 의미하는지 따로 언급하지 않았다. 가장 가능성 있는 대답은 리프 노드를 같은 높이에서 유지시켜주므로 균형잡혀있다는 뜻으로 (balanced)의 B라는 것이다. 혹은, 그가 일했던 보잉 과학 연구소(Boeing Scientific Research Labs)에서의 ‘B’를 의미하는다는 의견도 있다. B-Tree 2진트리는 자식노드가 2개다 하지만, B-Tree는 자식노드의 최대숫자가 2보다 크다. ( 키가 n개 있으면, 이 노드의 자식은 n.. 더보기
[DB] ORM ( Object Relational Mapping ) ORM ( Object Relational Mapping ) 객체 관계 맵핑 장점 객체 지향적 코드로 직관적이고, 긴 SQL 문장이 없이 표현할 수 있다. 유지보수가 편하다. DBMS 에 대한 종속성이 줄어든다. 단점 설계가 어려우며, 완벽한 ORM만으로 구현하기 어렵다. 복잡한 프로젝트의 경우 유지보수가 어려워지게 된다. 더보기
[mssql] Clustered(클러스터), NonClustered(넌 클러스터) Clustered 테이블에 하나만 생성될 수 있다. ( 데이터가 정렬되어야 한다는 조건이있기때문에 ) 테이블을 인덱스로 지정한 열에 맞춰서 자동정렬 된다. ( 물리적으로 재배열 ) 하나의 클러스터 인덱스만 생성할 수 있으므로, 신중하게 생성하여야 한다. PK로 검색하기 때문에 검색 속도가 빠르다. insert, delete 가 빈번한 컬럼은 클러스터를 잘 사용하지 않는다. NonClustered 테이블 당 여러개 생성가능 테이블을 재배열 하지 않는다. 저장 공간이 많이 소요되고 구조가 복잡하다는 단점이있다. 더보기
[mssql] Cursor Cursor 행 단위 작업을 효율적으로 하기 위한 방식 테이블에서 여러개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식 ( SELECT한 결과를 반복 작업해줘야 할 경우 유용하게 사용 가능 한 방식 ) 특징 내장 SQL문의 수행 결과로 반환될 수 있는 복수의 튜플들을 엑세스 할 수 있도록 해주는 개념 질의 수행 결과로 반환되는 첫번째 튜플에 대한 포인터 질의 결과로 반환 될 수 있는 튜플들을 한번에 하나씩 차례대로 처리할 수 있다. ( 많은 데이터를 처리할 경우에는 커서 사용을 피하는 것이 좋음 ) 명령어 DECLARE : 커서를 정의하는 등 커서에 관련된 선언을 하는 명령어 OPEN : 커서가 질의 결과의 첫번째 튜플을 포인트하도록 설정하는 명령어 FETCH : 질의 결과의 튜플들 중 현재의 .. 더보기
[mssql] 테이블 생성 테이블 생성하기 생성법 ) create table 테이블명 ( 컬럼명 타입 형태 ) 쿼리문) begin tran create table testTable( idx int identity(1,1) NOT NULL, id varchar(50), name varchar (50) NOT NULL, title varchar (2000) NOT NULL, value varchar NOT NULL ) --rollback --commit begin tran을 걸어주어 잘못생성했을경우를 대비하여준다. begin tran을 실행한 후 에는 항상 rollback또는 commit을 해줘야한다. alter table 을 통하여 테이블을 변경할수 있다. delete table 을 통하여 테이블을 삭제할수 있다. 더보기