개발세발

[IT잡학사전] DAY 07 본문

인터넷 배움/노마드코더 - IT잡학사전

[IT잡학사전] DAY 07

뉼👩🏻‍💻 2023. 1. 20. 22:38
728x90
반응형
SMALL

 

 

기록 날짜

2023. 01. 20 금요일 

 

 

오늘 읽은 범위

31. 데이터와 단짝 친구, SQL

32. NoSQL이 뭐죠?

33. 깃 & 깃허브, 똑같은 거냐고?

34. 버전을 표기하는 방법도 있어요?

35. 비밀번호는 어떻게 저장될까?

 

책에서 기억하고 싶은 내용 

 

 

SQL  Structured query language 

: 데이터베이스에 어떤 질문 또는 문의를 하기 위해 어떤 구조를 가진 언어  = 데이터베이스를 다루는 언어 

 

 

DBMS database management system

: 데이터베이스 관리 시스템 

➡️ SQL로 데이터베이스와 상호작용을 하려면 DBMS를 거쳐야 함.

 

❗️❗️ 즉 SQL은 데이터베이스가 아니라 데이터베이스를 관리해주는 DBMS와 대화하기 위한 언어 

 

 

데이터베이스에서는 한 무리의 데이터를 테이블(table)이라고 부르는데 이것은 엑셀의 시트와 같음

 

 

ORM object relational mapping 

: SQL 번역기 같은 도구로, 사용자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수있게 해줌 

ex. 파이썬의 장고 ORM (Django ORM), 라라벨의 엘러퀀트 ORM(eloquent ORM),

     노드제이에스의 시퀄라이즈 ORM(Sequelize ORM), 타입 ORM (type ORM)

- 하지만 모든 상황에 대응할 수 있는 것은 아니므로 한계점이 있음 

 

 

NoSQL 

- 도큐먼트 데이터베이스 document DB

- 키값 데이터베이스 key-value DM

- 그래프 데이터베이스 graph DB

 

JSON JavaScript object notation 

- JSON documnet : 제이슨 형식으로 저장된 파일

 

 

◼️ 도큐먼트 데이터베이스 

* 몽고디비 MongoDB 

- 데이터를 JSON 도큐먼트 형태로 저장함 

➡️ 대괄호와 중괄호만 구성하면 되고 데이터 마다 구성이 같을 필요가 없어서 원하는 어떠한 모양, 어떠한 종류의 데이터라도 저장할 수 있음 

[
	{ "id" : 1, "name" : "슬리퍼", "price" : 30000},
    { "id" : 2, "name" : "바지", "price" : 50000}
]

 

 

◼️ 키값 데이터베이스 

* 카산드라디비 CassandraDB

- 열이 넓음(column wide)

- 읽고 쓰는 속도가 정말 빨라서 대용량 데이터를 빠르게 저장하거나 읽을 수 있음

- 애플, 넷플릭스, 인스타그램, 우버 같은 회사에서 사용

 

*다이나모디비 DynamoDB

- 아마존에서 만든 DB

- 듀오링고에서 사용 

 

◼️ 그래프 데이터베이스 

- 열이나 도큐먼트가 필요하지 않고 노드라는 개념이 필요함 

https://bitnine.net/ko/graph-database/?ckattempt=1 

 

그래프 데이터베이스란 무엇입니까? ⋆ 비트나인글로벌

그래프 데이터베이스란 무엇입니까? ⋆ 비트나인글로벌

bitnine.net

 

 

 

 

깃 Git

: 파일의 이력을 관리하는 프로그램 

 

 

깃허브 GitHub

: 깃으로 관리한 파일 이력을 모두 저장해서 공유할 수 있는 곳. 

- 일종의 파일 클라우드 서비스와 동일 

- 깃허브 외에도 깃랩(GitLab), 비트버킷(Bitbucket)등이 있음 

 

 

 

*시멘틱 버저닝 semantic versioning specification SemVer 

: 숫자 3개를 사용하는 버전 표기 방식 

- 리액트, 장고에서 시맨틱 버저닝 방식으로 버전을 표기함 

 

4.0.5

첫 번째 숫자 : 프로그램에 엄청나게 큰 변화가 있을 경우 - 새 버전에 맞게 코드를 업데이트해야 하는 필요가 있음

두 번째 숫자 : 마이너한 업데이트 - 기능 추가 등등 

세 번째 숫자 : 패치나 버그 수정 

 

 

비밀번호 보안

1. 해시 함수 

- 동일한 입력값에 대해 동일한 출력값을 가짐 

- 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀜 

- 반대로 입력한다고 원래 값이 나오지 않음

 

** 레인보우 테이블 rainbow table

: 해시 함수가 변경한 값을 원래의 값과 연결한 표 

- 해시 함수를 통과한 값은 레인보우 테이블에서 찾아보면 원래 값을 알 수 있음

 

 

2. 솔트 

: 아주 작은 무작위 텍스트 

- 비밀번호를 무작위 텍스트인 솔트와 합쳐서 해시 함수에 통과시켜 원래 비밀번호를 찾을 수 없게 함 

 

 


 

그밥집 프로젝트 할 때 회원가입 기능을 구현하면서 비밀번호 보안에 대한 고민을 한 경험이 있다. spring때는 spring security를 팀원분이 활용해서 비밀번호 암호화를 해주었는데 nodejs환경에서 내가 직접 비밀번호 암호화를 하려고 하니 어떠한 방법으로 해야되는지를 몰라 많이 찾아보며 공부를 했었다. 그러다가 CryptoJS를 알게 되었고 salt라는 것도 제대로 처음 접할 수 있었다. 

공부를 하면서 느끼는 점은 꼭 내가 대충하고 넘어갔던 부분이 나중에 혼자 굴러댕기다가 어느새 엄청나게 큰 눈덩이가 되어 나를 덮쳐온다는 점이다... 면접때도 정말 많이 느꼈다. 

초심잃지 말고 꼼꼼히 열심히 공부하자 

728x90
반응형

'인터넷 배움 > 노마드코더 - IT잡학사전' 카테고리의 다른 글

[IT잡학사전] DAY 09  (0) 2023.01.22
[IT잡학사전] DAY 08  (0) 2023.01.21
[IT잡학사전] DAY 06  (0) 2023.01.20
[IT잡학사전] DAY 05  (0) 2023.01.18
[IT잡학사전] DAY 04  (0) 2023.01.18