오늘은 3일차인지, 4일차인지 모를 하루였다.
사실상 OT주차라서인지는 모르겠지만, 마음이 너무나도 놓인다는 거짓말..
사실상 오늘의 목표인 로그인 구현은 하지 못했다..
너무나도 어려운 것이였다.
따라서 오늘 3줄요약은 다음과 같다.
A. 사실상 그 입학시험관련해서 문제를 풀어보다가 발견한 것이다.
만약 mongoDB에서 데이터를 넘겨주었을때,
num 이라는 값이 중복되어서 저장되었다고 가정하자.
이 상황은 '버켓리스트' 문제에서 적용 가능한데
만약 내가 버켓리스트를 처음 적었을때를 num:1 이라고 가정하고
두번째 버켓리스트를 num:2
세번째 버켓리스트를 num:3
이라고 했을때, 내가 설정해준 코드는 DB에 있는 총 다큐먼츠의 list의 길이를 반환해서 num을 설정해 주기 때문에 다음에 들어오는 버켓리스트는 num이 4가 된다.
이때
이 버켓리스트에 삭제기능이 생긴다면 두번째 버켓리스트를 삭제해보자
그렇다면 새로 들어온 버켓리스트는 길이가 줄어들었으므로 3으로 들어오게 된다.
이때 중복이 생기는 것이다.
따라서 이를 막기 위해서 나는
이 리스트 중에서 가장 큰 num을 가진 친구를 찾아서 +1을 해주었다.
(사실상 여기에서 num은 새로운 Id 라고 생각해도 무방할 것같다.)
다른 필요한 pymongo에서 사용하는 언어들은 여기에 잘 정리되어 있다.
https://parkjh7764.tistory.com/25
사실상 이 질문은 지금 사용하고 있는 mongoDB 에서 가졌던 의문점이였다.
인터넷 커뮤니티를 살펴보고 있으면 사실상 한사람이 하나의 좋아요를 누르게 되어있다.
나도 지금 내가 만들고 있는 내 페이지가 한 사람당 하나의 좋아요만 누르게 하고 싶은 것이다..
사실상 로그인 기능은 구현할 수 없었다... 내일 클론코딩을 하더라도 무적권 해결하고 잘 것이다.
이 이야기를 개발 매니저님에게 질문하자 다대다, 다대일 db에 대해서 설명하면서 이 이야기가 나온것이다.
지금 내가사용하고 있는 MongoDb와 Mongoose 와 같은 것들이 가장 많이 사용하는 것들이라고 한다.
이에 대한 특징은 다음과 같다.
그렇다면 ORM은 무엇일까
ORM은 Object-Relational Mapper 이다.
이는 데이터베이스와 객체 지향 프로그래밍 언어간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
즉, 객체(클래스) 와 관계(관계형 데이터 베이스) 와의 설정을 의미하는 것이다.
객체지향 프로그래밍은 클래스를 사용하고
관계형 데이터베이스는 테이블을 사용하는데,
객체 모델과 관계형 모델간의 불일치가 존재를 하는데, 이 객체간의 관계를 바탕으로 SQL을 자동생성해서
불일치를 해결하는 것이 ORM이다.
이를 간편하게 수식화 한 것이 이것이다.
객체 (Class) <- ORM -> DB데이터
장점같은 경우에는
단점같은 경우에는
1. 복잡성이 올라갈수록 난이도가 높아진다.
2. 프로시저가 많은 시스템을 전환하기가 어렵다.
사실상 오늘 공부한게 별로 없다.
너무나도 슬프다.
내일은 진짜 많이한다 진짜