[TIL - 1019] 오늘의회고, upsert 쿼리, git tag/config, api 구조

오늘의 회고

  • 드디어 시스템 파악하기 시작! 모르는 것은 모른다고 말하고 배우는 자세를 취하면 아무리 실력 없더라도 안좋게 보지는 않을까 생각함. 그리고 입사해서 느낀 것은 글로 정리하는건 역시나 중요하다는 것 사내 위키에 시스템에 대한 히스토리 정리, 설명이 잘 되어 있다보니 파악하기가 수월하였음 명패에 쓴 “기본으로 돌아가자” 문구처럼 모르겠으면 거기서 헤매기보다 처음부터 훑어보면서 어디를 모르는지 체크부터 하도록 해야겠다. 오늘 공부 못한만큼 내일 많이 해야지~~~

데이터베이스

upsert

  • 데이터베이스에 저장되어있는 데이터가 있을 경우(unique key값 기준) update, 없을 경우 insert 하도록 sql을 짜서 데이터 중복되지 않도록 하는 것을 말함
    • 조회한 데이터를 메모리로 가져와서 필터링한 결과 있을 경우/없을 경우를 나눠서 쿼리를 또 다시 날리는 것과 일종의 프로시져처럼 하나의 쿼리로 조건문을 만들어 사용하는 것 중 어느 것이 나을까? : 성능 상의 이점과 유지보수 관점의 문제인가(너무 민감하게 받아들이는 것인가)
    • MySQL upsert 쿼리 관련 docs
  • 같은 쿼리를 2번 실행했을 때의 결과 : 존재한다면 같은 쿼리라도 @update.com으로 update 하기를 선언한 쿼리
mysql> insert into student (name, email) values ('jinbro', 'jinbro@test.com') on duplicate key update name='jinbro', email='jinbro@update.com';
Query OK, 1 row affected (0.01 sec)

mysql> select * from student;
+--------+-----------------+
| name   | email           |
+--------+-----------------+
| jinbro | jinbro@test.com |
+--------+-----------------+
1 row in set (0.00 sec)

mysql> insert into student (name, email) values ('jinbro', 'jinbro@test.com') on duplicate key update name='jinbro', email='jinbro@update.com';
Query OK, 2 rows affected (0.01 sec)

mysql> select * from student;                                                                
+--------+-------------------+
| name   | email             |
+--------+-------------------+
| jinbro | jinbro@update.com |
+--------+-------------------+

git

tag

  • 커밋을 참조하기 쉽게 이름을 붙이는 것 : 특정 커밋에 특정한 정보를 달아주는 것, release 커밋에 대해 tag를 활용
  • 종류
    1. light-weight tag : 간단하게 이름만 붙임
    2. annotated tag : 이름, 설명, 서명, 이메일, 태그 생성 날짜 정보를 포함시킬 수 있음
  • 만들어보기
# light-weight tag
> git tag ${태그이름}


# annotated tag 
> git tag -a ${태그이름} # m 옵션을 추가해서 바로 설명을 추가할 수 있음


# tag list
> git tag -n
version-0.0.1   first commit
version-0.0.2   두번째 베타버젼

API 구조

  • 업무에 대해서 전달해주시는 과정에서 core API와 core 주변에 그려진 API에 대한 설명을 듣고 알게된 점을 적어봄
  • core API와 주변 API : core API는 말 그대로 핵심 기능 요청 - 응답 받을 수 있는 API이고, core 주변에 딸려 있는 API는 core API의 구성요소를 aggregation 하여 만들어진 편의성에 초점을 둔 API