Hỏi & Đáp
강의자료 문의
안녕하세요 혹시 모든 자료가 필요하신걸까요?? 저희도 내부적으로 찾아봐야 할 부분이 있어서 필요한 자료가 따로 있으신건지 아니면 그냥 모든 자료를 제공해드리는것이 편하신지 말씀해주시면 전달드리도록 하겠습니다!
- Lượt thích
- 0
- Số bình luận
- 1
- Lượt xem
- 43
Hỏi & Đáp
안녕하세요 혹시 모든 자료가 필요하신걸까요?? 저희도 내부적으로 찾아봐야 할 부분이 있어서 필요한 자료가 따로 있으신건지 아니면 그냥 모든 자료를 제공해드리는것이 편하신지 말씀해주시면 전달드리도록 하겠습니다!
Hỏi & Đáp
안녕하세요 Cola님 질문 남겨주셔서 감사합니다. 음 우선적으로 제가 촬영하면서 표현이 조금 과한 부분이 있는거 같네요. 조금 정정해서 설명을 드릴게요. 결론부터 말씀드리자면 이거는 트랜잭션 격리 수준에 따라서 다른요소입니다. Defaut인 REPEATABLE READ에서는같은 email이두번들어가는것까지는막아줍니다. 하지만경쟁상태와완전히무관한건아니고, 격리수준에따라결과가달라지며데드락이발생할수있습니다. 그럼 왜 REPEATABLE READ에서는중복이생기지 않을까? 여러분들이 사용하시는 일반 SELECT는 Lock없이 스냅샷 데이터를 읽지만, INSERT ... SELECT 안의 SELECT(여기 예시로는 NOT EXISTS 서브쿼리)는 조금 차이가 있습니다. REPEATABLE READ에서 InnoDB는이 SELECT가읽는범위에공유(S) next-key 락을겁니다. 그래서 email = 'test메일' 을찾는순간그값이들어갈자리에 즉 자리라는걸 갭이라고 표현하는데, 이 갭에락이걸리고, 그걸 갭 락이라고 불러요. 이러면 다른트랜잭션은그자리에 INSERT할수없게됩니다. 또 이렇게 락을 거는 읽기는 스냅샷이 아닌 최신 커밋 데이터를 읽기 떄문에, 먼저 실행된 트랜잭션이 커밋한 row를 후속으로 들어오는 트랜잭션이 볼 수 있죠. 그럼 진짜 트랜잭션이 동시에 실행되면 어떻게 될까? 이거는 제가 예시를 좀 들어보도록 할게요. T1 : NOT EXISTS 확인 → 없음 → 해당 갭에 S 락 획득 T2: NOT EXISTS 확인 → 없음 → 같은 갭에 S 락 획득 (S 락끼리는 호환 ) T1: INSERT 시도 → T2 의 S 락 때문에 대기 T2: INSERT 시도 → T1 의 S 락 때문에 대기 서로 기다리는 데드락 → InnoDB 가 감지해서 한쪽을 롤백 (한쪽은 애플리케이션 에러 발생) 즉 결론은 한 건만 들어가고 중복은 생기지 않을꺼에요. 하지만 애플리케이션 상에서의 에러가 발생을 하게 되겠죠. READ COMMITTED에서는 어떨까요?? 해당 격리수준으로 가게 된다면, 이 SELECT는 락 없이 consistent read로 동작을 할 겁니다. 그냥 일반 읽기로 해석하시면 됩니다. 그러면 앞선 예시에서 T1, T2 둘 다 "없음"을 확인하고 둘 다 INSERT해서 같은 건이 드렁 갈 수 있어요. 그래서 어떻게 막는가? 격리 수준에 영향을 받지 않고 중복을 막고 싶다면 UNIQUE 조건을 걸어버리시는게 가장 좋습니다. 그 다음에 INSERT IGNORE나 INSERT ... ON DUPLICATED KEY UPDATE를 쓰거나, 중복 키 에러 등등을 애플리케이션 레벨에서도 고려하시면 좋을꺼에요. 결론 : NOT EXISTS 방식은 UNIQUE 제약을 걸 수 없는 상황에서 쓰는 차선책이다.
Hỏi & Đáp
안녕하세요 Cola님 질문 주셔서 너무 감사합니다. 우선 저도 Cola님이 남겨주신 질문의 의도가 명확하게 이해가 가지 않아서.. 전체적으로 정리해드릴게요. 제가 말하는 stmt는 PreparedStatement 를 의미합니다. JDBC를 직접 써라 그런 느낌을 말씀드리기 보다는 DB에 쿼리를 보낼 떄 "SQL 툴"과 "파라미터 값"을 분리해서 보내는 방식을 설명드린거였어요. 이 방식을 어떤 기술을 쓰든 내부적으로는 똑같이 적용된다는 의미였고요 JDBC : PreparedStatement 를 직접 만들고 setLong(), setString() 등으로 값을 바인딩 MyBatis : #{param} 으로 작성하면 내부에서 PreparedStatement 로 바인딩 (${param} 은 문자열 치환이라 해당되지 않고 SQL Injection 위험이 있습니다) JPA/Hibernate : JPQL 이나 메서드 쿼리도 최종적으로 PreparedStatement 로 실행 그래서 그냥 그대로 사용하시는거 사용하시면 되는거고, 그저 PreparedStatement 를 알고 있어라라는 의미입니다. 참고로 MyBatis는 ORM으로 생각하지는 않아요 단순 SQL Mapper라고 생각하고 혼동이 오실까봐 이렇게 추가로 설명드릴게요!! 혹시 추가적인 질문이 있다면 편하게 남겨주세요. 감사합니다!!
Hỏi & Đáp
안녕하세요 blueBird님 질문 남겨주셔서 감사합니다!! 우선 제가 결론부터 말씀드릴게요. 코드가 절대 잘못된게 아닙니다. 학습 자체가 원래 돌릴떄마다 다른 값이 나오는게 정상적이에요. 숫자가 다른 이유 학습 자체가 확률적이기 떄문입니다. 기본적으로 train.ts 파일을 보시면 난수가 들어가는 부분들이 크게 세가지가 있어요. model.ts의 초기화 : Math.random으로 인해서 랜덤 초기화를 진행합니다. 에폭마다 학습 쌍을 섞는 셔플도 Math.radom을 사용하고 있어요 에폭 : 학습 데이터 전체를 처음부터 끝까지 한 번 다 훑는 단위 negative sampling에서도 가짜 쌍을 뽑는데, 이것도 Math.random입니다. 그렇다고 시드를 고정하지는 않아요. 시드 : 난수 생성기 시작 지점 그래서 실행할 떄마다 출발하는 부분이 다른거고, 중간에 보는 순서도 다른거고 쌍도 매번 다르기 떄문에 수치가 다른게 맞습니다. bludBird님이 계속 실행해보셔도 다른 값이 나올꺼에요 그러기 떄문에 수치 자체를 보기 보다는 순위를 집중적으로 보시면 됩니다. 실행마다 수치는 달라지니깐 결국 어떤 방향으로 가고있냐를 보는것이 모델 학습이에요. 그 부분에 집중해서 보는것이 분포 가설이 잘 보이냐라는 관점인거죠. 그래서 동물 단어 순위를 집중적으로 보시면 됩니다. 이렇게 답변 드릴 수 있을꺼 같은데, 추가적인 질문이 있다면 편하게 댓글로 남겨주시거나 추가 질문으로 남겨주세요!! 질문 주제가 다르다면 추가적인 질문으로 논의 열어주시면 감사하겠습니다!! 다양한 분들이 참고 하실 수 있는 자료로써 활용이 될 수 있을꺼같아요!! 오늘도 좋은하루 보내세요!! 감사합니다!
Hỏi & Đáp
안녕하세요 강호님!! 해당 부분 관련해서는 자료 업데이트 해 두었습니다. 그리고 추가로 수업 노트에서도 관련된 명령어 다 기입해두었으니깐!! 해당 부분을 참고해주셔도 좋을꺼같아요!! 좋은 하루 보내세요!!
Hỏi & Đáp
혹시 해당 영상에서는 스크립트 실행을 안하는걸로 보이는데, 다른 영상에서 안맞는다는 말씀이실까요??
Hỏi & Đáp
확인 후 금일까지 업데이트 하겠습니다! 불편을 드려서 죄송합니다
Hỏi & Đáp
안녕하세요 강호님, 아무래도 코드 자체를 치는 부분이 거의 없다보니 제가 따로 첨부를 안한걸로 보입니다. 관련해서는 영속 모드로 관리하기 및 ChromaDB 컬렉션 CRUD 해당 강의의 소스코드를 사용하셔도 무방하니, 해당 부분 우선 참고해서 사용해주시면 감사하겠습니다. 말씀해주신 tsconfig.json등등에 대해서는 제가 빠른 시일내에 업데이트해서 자료 첨부해놓도록 하겠습니다. 감사합니다.
Hỏi & Đáp
안녕하세요 OS님 질문 남겨주셔서 감사합니다. 샤딩이라는게 기본적으로 인스턴스를 여러 개 띄워야 하는 작업이기 떄문에 Mongo Cluster를 사용한다고 해도 비용이 발생 할 수 있습니다. 해당 부분에 대해서는 저희 팀도 내부적으로 좀 검토해보도록 하겠습니다. 단순하게 이론적으로만 아셔도 무방한 주제이기 떄문이에요. 샤딩까지 적용한다면, 정말 성공한 스타트업이거나, 실제 데이터 엔지니어 분들이 있을겁니다. 그래서 데이터쪽을 하신다면 이 부분이 중요하실수도 있지만 데이터 업무를 하시지 않을수도 있는 부분이고, 백엔드 개발만 위주로 한다면 크게 몰라도 되는 부분이라서요. 저희 커리큘럼으로 봤을 떄 만약 해당 주제가 필요하다면 추가로 보강을 해보도록 하고, 아니라면 별도로 강의로 뺴는게 좋지 않을까싶습니다. 별도 강의로 뺴게 된다면 그떄는 OS님에게 쿠폰을 제공해드릴게요!! (무료 쿠폰!!) 감사합니다!
Hỏi & Đáp
안녕하세요 사실 이 CAP이라는 기준은 누가 어떤 부분에 중점을 두냐에 따라서 다릅니다.. 그래서 정답이 막 있다고 가정하고 그걸 믿지는 않으셨으면 좋겠어요. 예를들어서 OS님은 가용성 측면을 우선시한다면 다른 관점일꺼고, 제가 일관성을 우선한다면 다른 방향으로 해석이 가능할겁니다. CAP이론 자체를 하나의 서비스는 무조건 이런거다 라는 관점보다는 결국 CAP 세가지는 공존이 불가능하구나 라는 관점을 보시면 좋을꺼같습니다. 감사합니다!!