✏️기록하는 즐거움
article thumbnail

 

🏷️ 오늘 읽은 범위: Ep.30 ~ Ep.34

 


 

💡 책에서 기억하고 싶은 내용을 써보세요.


EP.30 코로나가 준 레거시 시스템의 교훈

[🏷️179p-181p]

코볼(COBOL, Common Business Oriented Language)

  • 1959년에 탄생한 언어
  • 코볼로 만들어진 정부 시스템을 코로나로 인해 사용했어야 하는데, 오래되고 잘 사용되지 않았던 언어였기 때문에 유지 보수하는데에 어려움이 있었다.
개발자가 가져야할 생각 2가지
프로그램은 책임감을 가지고 만들어야 한다.
프로그램은 끊임없이 관리해야 한다.

 

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

[🏷️184p-189p]

SQL과 데이터베이스

  • SQL로 데이터베이스와 상호작용을 하려면 DBMS를 거쳐야 한다.
  • 즉, SQL은 데이터베이스를 관리해 주는 DBMS와 대화하기 위한 언어이다.
  • DBMS는 같은 SQL이더라도, 각자의 특징이 조금씩 다르다.
  • 데이터베이스에서 한 무리의 데이터를 테이블(table)이라 하는데 엑셀의 시트와 같은 형태이다.

SQL을 프로그래밍 언어로 쓸 수 있게 해주는 ORM

  • ORM은 사용자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있게 해주기 때문에 개발자가 ORM에 지나치게 의존하게된다.
  • 번역기가 만능은 아닌 것처럼 ORM만으로 해결하기 어려운 상황에 대처하기 어렵다.
  • 따라서 SQL을 어느정도 알아두는 것이 좋다.

 

EP.32 NoSQL이 뭐죠?

[🏷️190p-193p]

NoSQL

  • SQL처럼 NoSQL은 DBMS마다 특징이 다른 것뿐만 아니라 사용하는 데이터베이스 자체의 성질도 다르다.
  • NoSQL의 데이터베이스 종류는 도큐먼트 데이터베이스, 키값 데이터베이스, 그래프 데이터베이스 등이 있다.

도큐먼트 데이터베이스(document DB)

  • ex. MongoDB
  • MongoDB는 데이터를 JSON(제이슨) 도큐먼트 형태로 저장한다.
  • SQL이 표처럼 데이터를 행과 열로 저장하는 것과는 다르게 대괄호와 중괄호로 구분하여 저장한다.
[
	{ "id": 1, "name": "슬리퍼", "price": 30000 },
	{ "id": 2, "name": "바지", "price": 50000 },
]
  • SQL로 다루는 데이터베이스는 표의 형태를 띄고 있어서 형태가 매우 정적이다. 예를 들어 데이터를 SQL 데이터베이스에 추가하려면 id, name, price에 해당하는 값을 다 넣어 주어야한다.
  • 반면 JSON 도큐먼트 형태는 데이터마다 구성이 같을 필요가 없다.

키값 데이터베이스(key-value DB)

  • ex. CassandraDB, DynamoDB
  • CassandraDB, DynamoDB는 읽고 쓰는 속도가 빠르다.

그래프 데이터베이스(graph DB)

  • 노드로 관계를 표현한다.

대부분 SQL 데이터베이스를 사용하고, NoSQL 데이터베이스의 특징을 사용해야 하는 경우가 아니라면 잘 사용하지 않는다.

 

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

[🏷️194p-197p]

깃(Git)

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

  • 파일을 항상 지켜보고 있어서 파일의 변경 사항들을 모두 알고 있다.
  • 협업시에 다른 사람이 변경한 부분과 내가 변경한 부분을 비교해서 다시 하나로 만들 수도 있다.

깃허브(Github)

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

  • 파일 클라우드 서비스와 같고, 파일 뿐만 아니라 깃으로 관리한 파일 이력도 공유할 수 있다.
  • 깃허브에 깃 이력을 업로드 하는 것을 푸시(push), 내려받는 것을 풀(pull)이라고 한다.

 

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

[🏷️198p-199p]

SemVer(semantic versioning specification)

숫자 3개를 사용하는 가장 널리 쓰이는 버전 표기 방식

  • A.B.C
  • A: 프로그램의 엄청나게 큰 변화가 있을 때
  • B: 마이너한 업데이트시 사용
  • C: 패치나 버그 수정

🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.


버전 표기 방식이 있었다니 너무 흥미로운 이야기였다.

앱을 설치할 때도 업데이트 내용에 버전이 표기되어 있었지만, 크게 관심을 가지지 않고 그냥 지나치곤 했다.

나중에 내가 개발한 프로그램이 2.0.25와 같이 되지 않기를 바란다.🥹

 

🔍 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.


레거시(legacy)
오래 전에 개발된 시스템을 레거시 시스템이라고 한다.
SQL(Structured Query Language)
structured(구조화된) + query(질문 또는 문의) + language(언어)
즉, 데이터베이스에 질문 또는 문의를 하기위해 어떤 구조를 가진 언어
DBMS(database management system)
데이터베이스 관리 시스템
ex. MySQL, PostgreSQL, SQLite, Oracle, MariaDB 등
SQL 문법
SQL문 설명
SELECT 열 FROM 테이블; ‘테이블’에서 ‘열’에 해당하는 모든 정보를 가져온다.
SELECT 열 FROM 테이블 WHERE 조건문; ‘테이블’의 ‘열’에서 ‘조건’에 해당하는 모든 정보를 가져온다.
SELECT 열 FROM 테이블 WHERE 조건문 LIKE 조건문2; ‘테이블’의 ‘열’에서 ‘조건’에 해당하는 정보 중 ‘조건2’와 같은 모든 정보를 가져온다.
ORM(object relational mapping)
개발자에게 SQL 번역기 같은 도구
사용자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있게 해준다.
ex. 파이썬-장고 ORM, 라라벨-엘리퀀트 ORM, 노드제이에스-시퀄라이즈 ORM / 타입 ORM
키-값 데이터베이스 (key-value DB)
키를 고유한 식별자로 사용하는 키-값 쌍의 집합으로 데이터를 저장한다.
레코드를 고유하게 식별하는 "키"를 사용하여 저장되고 검색되며, 데이터베이스 안에서 데이터를 빠르게 찾는데 사용된다.
그래프 데이터베이스(Graph DB)
그래프 데이터베이스는 노드를 사용하여 데이터 엔터티를 저장하고 엣지로는 엔터티 간의 관계를 저장한다.

Graph DB, 출처: Amazon AWS

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!