데이터를 상위와 하위 관계인 트리 구조로 조직하여 관리하는 형태의 데이터베이스 모델
특성으로는 루트,노드 / 부모 - 자식 관계 / 서브 트리 / 깊이와 높이 / 간선 이 있다

- 깊이 : 루트에서 특정 노드까지 도달하기 위해 거쳐야 하는 간선의 수
- 높이 : 특정 노드에서 가장 먼 리프 노드까지의 경로 길이
- 트리의 높이는 루트 노드의 높이 또는 가장 깊은 노드의 깊이를 의미함.
컴퓨팅에서 네트워크 모델 또는 망 모형은 객체와 그들 사이의 관계를 유연하게 표현하기 위해 고안된 데이터베이스 모델이다. 이 모델의 특징은 객체 유형을 노드로, 관계 유형을 아크로 보는 *데이터베이스 스키마 가 그래프 구조를 띠며, 계층형 모델이나 격자 그래프에 국한되지 않는다는 점이다.


MySQL : 오픈 소스 관계형 데이터베이스 관리 시스템이다(RDBMS) 관계형 데이터베이스는 데이터를 하나 이상의 데이터 테이블로 정리하며, 여기서 데이터는 서로 연관될 수 있다. 이러한 관계는 데이터의 구조화를 돕는다.
PostgreSQL : 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)로, 다른 관계형 데이터베이스 시스템과 달리 연산자, 복합 자료형, 집계 함수, 자료형 변환자, 확장 기능 등 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함.
MySQL 과 PostgreSQL의 공통점
- 둘 다 구조화된 쿼리 언어(SQL)를 인터페이스로 사용하여 데이터를 읽고 편집 가능
- 둘 다 오픈 소스이다
- 둘 다 데이터 백업,복제 및 액세스 제어 기능이 내장되어 있음.
RDB(관계형 데이터베이스)
ACID
- Atomicity(원자성) : All or Nothing / 트랜잭션은 모두 실행하거나 실행하지않음의 두가지 상태만
- Consistency(일관성) : 트랜잭션 이전과 이후에 데이터베이스는 항상 일관적이여야 한다는 규칙
- Isolation(고립성) : 여러 트랜잭션이 동시에 실행될 때에도, 혼자 실행되는 것처럼 동작하게 만들어야 한다.
- Durability(영속성) : 커밋된 트랜잭션의 결과는 데이터베이스에 영구적으로 저장되어야 한다.
INDEX : 추가적인 쓰기 작업과 저장 공간을 활용하여 DB 테이블의 검색 속도를 향상시키기 위한 자료구조다. 우리가 뭔가를 찾기 위해 목차를 보는거같은 느낌이다.
RDB - 정확하게 처리는 해주지만 서버 1대에서 담당
RDB 문제점의 해결하는 방법으로는 수직 확장(Scale-up) : 서버를 더 좋은걸 사용하기 또는 수평 확장(Sclae-out) : 서버를 여러개 사용 해결방법이 존재했지만 그 중 RDB는 수평 확장이 어려운 문제점이 있었다. 그래서 NoSQL이 등장했다.
Not only SQL
-> SQL만 아니면 된다. / Document, key-value, graph
특징으로는
- 스키마를 가지지 않는다(Schemaless).
- 대규모 확대가 가능하도록 수평적 확장성(Scale-out)을 가져 대규모의 데이터를 유연하게 처리할 수 있다.
- DB의 다양한 저장소를 사용 가능
- Read/Write의 성능이 뛰어나다.
- 빅데이터 처리에 특화되어 있다.
정확성을 어느정도 포기, 속도랑 확장성을 얻음, 표 형식을 버림, 각 서비스에 맞는 형태의 DB를 사용
MongoDB : 표 형태의 저장 X, 메모장처럼 저장함.
Redis : 빠른 임시 저장소 / 자주 읽는 데이터를 메모리에 올려놓고 바로 꺼내주는 역할
Cassandra : 많은 데이터에 특화 되어있음(여러 서버에 저장) / 쓰기 속도가 빠름
SQL은 정확성이 요구되는 분야에서 사용된다 (금융권)
NoSQL은 소셜서비스가 대표적이다.
클라우드 DB / 서버리스
여태까지는 전부 직접 설치하는 방법이였다 > 서버 역할을 하는 컴퓨터에 직접 MySQL이나 PostgreSQL을 설치해서 사용(설정 및 관리), 업데이트, 백업 / 용량이 부족할 경우는 증설 / DB 관리자의 역할
이런걸 대신해주는게 > AWS,RDS
Firebase > 설정도 거의 안하고 앱에서 바로 DB를 사용 가능하게 해줌
관리형 DB(Managed DB) / 서버리스가 핵심
서버리스는 실제로 서버는 있지만 사용자가 신경쓰지 않아도 됨
-> 서버롼리는 클라우드 업체가 해줌
이제 DB는 설치하는게 아닌 사용하는게 됨
배포 (Release / Deploy)
보통 Release의 뜻과 Deploy의 뜻이 비슷해서 둘이 같은 의미로 사용하는줄 알았는데, 서로 다른 의미를 가지고 있다고 한다
Release(출시): 사용자에게 공개할 버전을 확정하는 과정 / 사용자가 서비스나 기능을 사용할 수 있게 하는 것
Deploy(배포) : 배포는 개발된 소프트웨어를 실제 운영 환경에 적용하는 과정을 말한다.
웹서버
nginx
nginx는 웹 서버 소프트웨어로, 웹 서버, 리버스 프록시 및 메일 프록시 기능을 포함한다.
요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다.
docker
*컨테이너를 활용하여 소프트웨어를 배포 및 구동하기 위한 오픈 소스 플랫폼이다.
특징
컨테이너 - 실행 중인 컴퓨터의 커널에 라이브러리, 실행파일을 격리하고, 이 공간 내에 독립된 프로세스 및 네트워크를 실행시키는 기수로가 이를 위한 소프트웨어 구성 일체를 이야기한다. 같은 버전 커널에서 동일한 동작으로 보장한다.
vercel
클라우드 컴퓨팅 서비스지만 하나의 컴퓨터 구조를 가지는 인스턴스를 주 상품으로 제공하는 AWS와 다르게, Vercel은 정적(Static)사이트와 고수준의 서버리스 펑션을 제공한다. 특히나 모든 설정을 수동으로 할 필요 없이 사용하고 싶은 소스를 정하고 Deploy만 하면 나머지 빌드 과정이나 운영은 Vercel이 모두 처리한다. 따라서 웹 개발자에게 특히 친화적이다.
railway
Railway은 코드 배포, 네트워킹, 데이터베이스 관리 등을 하나의 인터페이스에서 처리할 수 있는 올 인원 클라우드 배포 플랫폼이다. 주요 특징으로는 간편한 배포, 원클릭 DB,시각적 관리, 유휴 비용 절감 등이 있다.
도메인
컴퓨터나 서버가 서로를 찾기 위해 쓰는 복잡한 숫자 주소(IP) 대신, 사람이 기억하기 쉽도록 만든 문자 형태의 인터넷 주소
dns
Domain Name System은 사용자에게 친숙한 도메인 이름을 컴퓨터가 네트워크에서 서로를 식별하는데 사용하는 인터넷 프로토콜(IP) 주소로 변환하는 인터넷 표준 프로토콜의 구성 요소이다.