목차 FastAPI와 SQLAlchemy, 그리고 Pydantic을 이용한 토이 프로젝트를 진행하던 중 PostgreSQL을 사용해야 할 일이 생겼다. 그냥 MySQL을 사용했어도 되지만, SQLAlchemy와 궁합이 좋은 디비가 PostgreSQL이라길래. 찍먹 하듯이 잠깐 사용하고 넘어가게 될 테지만, 그래도 이렇게 만난 것을 기념으로 블로그에 정리를 해두기로 했다. PostgreSQL, 시작해 보자. Brief History PostgreSQL의 독음은 '포스트그레스큐엘'이다. MySQL을 '마이 에스큐엘'이라고 부르는 것과 차이가 있는데, 포스트그레스큐엘의 개발 과정을 살펴보면 그 이유를 알 수 있다. 포스트그레스큐엘은 캘리포니아대학 버클리분교의 Ingres 프로젝트에서 시작되었다. 이후 문제점을..
목차 벡터 데이터베이스는 벡터 검색 기반 환경을 만들고자 하는 개발자를 위한 것이다. 개발자는 임베딩으로 생성된 벡터를 벡터 데이터베이스에 인덱싱 할 수 있으며, 이를 통해 인접 벡터를 쿼리 하여 유사한 데이터를 찾을 수 있다. 위 설명은 AWS 공식문서에 쓰인 번역문이다. https://aws.amazon.com/ko/what-is/vector-databases/ 벡터 데이터베이스란? 벡터 데이터베이스 설명 - AWS 정보는 다양한 형태로 제공됩니다. 텍스트 문서, 리치 미디어, 오디오와 같이 비정형 정보도 있고 애플리케이션 로그, 테이블, 그래프와 같이 정형화된 정보도 있습니다. 인공 지능과 기계 학습( aws.amazon.com 그러니까 한 마디로 말하자면 고차원 데이터를 벡터 형태로 임베딩 하여 ..
목차 NoSQL NoSQL은 Not only SQL의 약자이며, 기존의 관계형 데이터베이스에서 벗어난 저장방식을 가리킨다. 이에 관한 더 자세한 설명 및 SQL과의 비교는 예전에 정리한 적이 있으므로, 해당 게시글로 대체한다. [데이터베이스]SQL vs. NoSQL [데이터베이스]SQL vs. NoSQL NoSQL는 Not only SQL의 약자로, SQL만을 사용하지 않는 DBMS(DataBase Management System)을 말한다. 관계형 데이터베이스를 주로 사용하는 SQL과 달리 여러 유형의 데이터베이스를 사용하는 넓은 범위라고 보 gnidinger.tistory.com 이 글에서는 Node.js, TypeScript, 그리고 mongoose를 사용하는 환경을 기반으로 mongoDB의 1:N..
목차 _id 몽고디비는 컬렉션에 도큐먼트가 생성될 때마다 자동으로 생성되는 고유한 필드로, ObjectId라는 특수한 데이터 타입을 가진다. 이 타입은 12바이트의 숫자, 정확하게는 24글자의 16진수로 표현된다. 이 숫자는 다시 네 개의 요소로 나뉘는데, 각 요소에 대한 설명은 다음과 같다. Timestamp: ObjectId가 생성된 시간. 이를 이용한 시간순 정렬도 가능 Machine ID: 디비가 돌아가는 머신(컴퓨터)의 식별자이다. 이를 이용해 같은 머신에서 생성된 객체를 구별할 수 있다. Process ID: 몽고디비 프로세스의 ID. 동일한 머신에서 돌아가는 다른 몽고디비 프로세스가 생성한 객체와 구별할 수 있다. Counter: 랜덤값으로 시작하는 카운터 값이다. 동일한 시간, 머신, 프로..
가장 최근에 과제 전형을 경험한 회사에서 MySQL이 아닌 MariaDB를 기본으로 한다는 말을 들었다. MariaDB에 대해 전혀 모르고, 아는 거라곤 '라이선스 문제로 갈라져 나온 MySQL의 갈래 아닌가..?' 정도여서 이참에 개념을 확실히 잡고, MySQL로 진행한 과제전형을 MariaDB로 바꿔보려고 한다. 우선 디비에 대한 소개부터. MariaDB MariaDB는 오라클로 넘어간 MySQL의 라이선스 상태에 반발해 2009년에 최초 출시된, 오픈소스 RDBMS이다. MySQL을 포크 해서 개발한 DB 답게 로고도 역시 해양생물인 바다사자이며, 이름은 개발자 몬티 와이드니어스의 둘째 딸 마리아에서 따왔다고 한다. MySQL과의 높은 호환성을 위해 저작권 공유 정책을 시행하고 있으며, 그 목표는 ..
목차 지금 진행하고 있는 과제전형에서 웹플럭스+R2DBC+MySQL을 이용해 프로젝트를 구성하게 되었다. 리액티브한 디비는 몽고만 써본 터라 초기 설정에 아주 조금 시간이 소요되었는데, 결론부터 말하자면 리액티브 몽고 디비에 비해 R2DBC는 다소 허접하고 덜 만들어진 느낌을 지울 수가 없었다. 그래도 좋아지겠지.. 하며 내가 구성해둔 기본의 기본 설정을 기록. R2DBC R2DBC는 Reactive Relational Database Connectivity의 약자로, 리액티브 프로그래밍 모델을 기반으로 한 관계형 데이터베이스 연결을 제공하는 라이브러리이다. 2018년 5월에 처음 공개되었으며, 기존의 JDBC 방식으로 접근 가능하면서도 비동기/논블로킹을 지원한다는 장점이 있다. 따라서 당연히 고성능, ..
파이썬에서 Django를 이용해 프로젝트 생성 후 디비를 생성하면 기본적으로 SQLite가 생성된다. 다른 디비는 실력이 좀 더 늘면 사용하기로 하고, 한동안은 만나게 될 SQLite에 대해 짧게 정리하고 넘어가자. SQLite SQLite는 데이터베이스 엔진이다. 당연한 소리다. 조금 더 구체적으로 들어가자면 오픈소스 SQL 데이터베이스 엔진으로써, SQL이 붙었기 때문에 역시 당연하게도 관계형 데이터베이스를 관리하는 역할을 한다. 2000년에 미 해군이 이지스함에서 운용할 목적으로 개발하였으며, 그 덕분에 필요없는 기능을 전부 제거했기 때문에 Lite라는 이름에 걸맞게 굉장히 경량이라고 한다. 추가로 macOS, iOS, 안드로이드 등에는 기본으로 탑재되어 있으며 디비 전체를 하나의 파일에 저장하는 ..
목차 개인 프로젝트를 진행하면서 이름만 많이 듣던 Reactive mongo DB를 사용하고 있다. 잘 모르는 채로 더듬더듬 쓰면서 경험치가 쌓이다 보니, 이제야 전반적인 개념이 궁금해져서 정리 시작. MongoDB 몽고 디비는 HUMONGOUS DB를 줄인 표현이다. 그 이름대로 대용량 환경에 대응하기 위해 개발되었다. 또한 몽고디비는 대표적인 NoSQL DB 중 하나이며, 문서 지향(Document-Oriented) 데이터 모델을 사용하고 JSON과 비슷한 동적 스키마형 도큐먼트(몽고DB에서는 이를 BSON이라 부른다)로 데이터를 저장 및 조회한다. 이베이, 뉴욕 타임스, 구글, 페이스북 등이 이 몽고디비를 주력으로 사용하고 있으며, 메모리 내에서 작업하도록 설계되어 있기 때문에 같은 조건에서 RDB..
목차 지난 글에는 DB 인덱싱에 대한 소개와 그때 사용하는 자료구조인 B-Tree에 대해 적었다. 2023.03.20 - [Development/Database] - [Database]Index에 대하여 + B-Tree [Database]Index에 대하여 + B-Tree Index 인덱스란 말 그대로 색인이다. 여기선 주어진 데이터베이스에서 원하는 자료를 빨리 찾을 수 있도록 도와주는 일종의 자료구조라 할 수 있다. 원하는 테이블의 컬럼(둘 이상도 가능하다)에 gnidinger.tistory.com 요약하자면 인덱싱이란 원하는 데이터를 빨리 찾을 수 있도록 테이블 외부에 별도의 색인을 생성하는 작업이며 B-Tree란 이를 저장하기 위해 사용되는, 이진트리의 확장버전이라 할 수 있다. 추가로 B-Tree..
목차 Index 인덱스란 말 그대로 색인이다. 여기선 주어진 데이터베이스에서 원하는 자료를 빨리 찾을 수 있도록 도와주는 일종의 자료구조라 할 수 있다. 원하는 테이블의 컬럼(둘 이상도 가능하다)에 인덱스를 생성한다는 말은 데이터베이스 내부에서 해당 컬럼이 저장된 주소값을 가지는 자료구조를 테이블과 논리, 물리적으로 독립된 구조로 설계하는 것을 가리킨다. 이때 생성되는 인덱스는 컬럼의 값과 물리적 주소를 키/밸류로 가지는 구조를 가지며, 이를 이용해 빠른 탐색이 가능해진다. 참고로 인덱싱을 하지 않은 테이블의 경우, 원하는 값을 얻어내기 위해 모든 테이블을 스캔하는 Table Scan을 실행하며, 이는 최악의 경우 O(n)의 시간복잡도를 가지게 된다. 더 나가기 전에 장/단점과 인덱싱을 사용하기 좋은 환..
- Total
- Today
- Yesterday
- 세계여행
- 유럽여행
- 세계일주
- 파이썬
- 세모
- 동적계획법
- 지지
- 알고리즘
- 리스트
- 스프링
- 맛집
- 여행
- RX100M5
- 자바
- 남미
- 야경
- 중남미
- BOJ
- 유럽
- Backjoon
- a6000
- spring
- 기술면접
- 백준
- Python
- 스트림
- Algorithm
- 면접 준비
- java
- 칼이사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |