솔직히 좆도없음
rdb도 종류가 워낙많아서 엔진마다 세부구현사항, 트랜잭션 경계 등 모든게 다르고
읽기성능은 몽고db나 rdb들이나 b트리기반에서 차이안나고
쓰기성능은 rdb들도 lsm트리엔진 사용으로 성능향상늘 기대할수있고 쓰기스키마의 일관성 제약을 해제해버리면 그만임. 대부분이 무거운 rdb엔진이라 그렇지 rdb엔진이 얼마나 많은데 가벼운게 없겠음?
그래서 rdb와 nosql은 쓰기스키마 읽기스키마의 차이로 두고 있긴 하지만
대부분의 rdb최신버전들은 이미 몽고db가 사용하는 이진json 형식의 데이터를 지원함. 인덱스로 지정도 가능하고.
오히려 이것저것 많이썻을때 시스템 구축 및 유지보수의 복잡성에 대해서 설명할수있어야하는데
대부분은 postgresql로 한번에 구축하는거에 사용성 따잇따잇
물론 집중하는 데이터 방향성이 다르니깐 rdb에서 바이너리json을 사용하는거랑 몽고db를 쓰는거랑의 차이가 분명히 있고 성능차이가 있겠다만
적어도 몽고db를 쓴다고 할거면 그 차이를 설명할 수 있어야지
그건 아니지 cap theorem에서 뭘 포기했냐 차이가 있는건데
cap이론은 분산db에서 분단내성을 가지고 일관성과 가용성중 하나만을 취한다고 설명하는 이론인데 에초에 실무적으로 접근하면 이미 사장된 수준의 이론이지. 어느 db가 일관성과 가용성중 하나를 완전히 버릴수있겠음?
가끔 rdb가 p를 버렷다고 하는 사람도 있던데 이건 먼소린지모르겟음 ㅋㅋ p를 버린다는건 분단내성을 버린다는거고 그럼 분산db가 아니란 소리임
@밀우 보통 동기 복제로 cp를 챙기지 이때 네트워크 단절이라는 상황일거고 평상시에는 ca둘다 챙기지 평상시 상황을 위해서 PACELC이 나온거기도하고
내가 몽잘알 이였으면 뭔가 얘기를 해봤을텐데 아쉽 - dc App
남의 돈 벌어다 주는 일 하면 굳이 모험할 필요 없긴 해. 결국은 다 나중에 자기 평판으로 돌아오는거라. 편하게 남들 많이 쓰는거 쓰자. 한동안 코로나때 신기술싸개 한 주니어들 지금은 재취업도 못하고 빌빌거리는중.
읽기성능은 사실 무엇을 읽는가에 따라 달라짐. 사실 B-Tree쓰면 다 똑같다고들 이야기하는데, 사실 읽기 비용 자체가 살짝씩 다름.RDB를 LSM으로 쓰면된다는건 그럼 굳이 RDB를 쓸 이유가 없음. 걍 잘하는 영역이 다른거지 뭐
그 살짝식 다름 수준으로 면접가면 개털린다니깐
@밀우 근데 그걸 굳이 세부까지 외워가며 할 필요가 있나 DB 내부구조 수정할 이유가 없지 않나. DB 내부 엔진 동작 원리를 아는것보다 언제 쓰는지가 더 중요하다 생각을 함. 굳이 그걸 DB 내부 엔진까지 외우라는건 말마따나 DB 엔진 만드는 엔지니어나 그쪽 애들한테만 필요한게 아닐까 싶은데. 걍 몽고 DB는 인메모리 연산기능있고, RDB는 인덱스 많으면 느려진다 이정도 수준이면 끝 아닌가
너.... 그말 취소해라!!!! - dc App
@ㅆㅇㅆ(124.216) 몽고db를 썻으면 왜 썻느냐라는 질문엔 답해야지 결국 본인도 왜썻는지 모른거잖아
몽고db랑 redis 중급도서 추천점 - dc App
저도몰르는데요 리마큐가 책이좋으니 리몽디도 좋지않을까요 솔직히 저더 몽고디비 젖도몰라서 언젠가 배웝볼거
몽고db버전도 있구나 ㄱㅅ rdb쪽은 제품별로 이미 읽는중 - dc App
@30세전에특급DBA 찾아보니 몽고db완벽가이드 라는 책 좋은듯. 오라일리에서 나온책인데 몽고db 엔지니어가 쓴거래
분산환경이냐 아니냐가 젤 큰차이 아님? 샤딩으로 쓰기성능 올려서 확장성 높이려는거잖아
샤딩이 몽고db의 특징이긴 하지만 몽고db만 지원하는게 아니잖음. RDB가 얼마나 많은데 샤딩이 안되겠음. 오라클도 지원하는데말여
샤딩이 안되겠음은 무슨소리야ㅋㅋ 샤딩이 분산환경에다 나누어서 쓰기작업하는건데 이걸 rdb에서하면 일관성 보장이 안되잖아
rdb가 일관성을 어떻게포기함 그거 어느정도 포기하고 쓰기성능 높이려는게 샤딩인데
@백갤러4(61.75) 뭔소리임 RDB가 샤딩을 쓰면 왜 일관성 보장이 안됨. 어떤 키로 샤딩을 하냐에 따라 다른거지; 그 논리면 RDB는 파티셔닝으로 수평 확장 하는거 자체가 지원안됐겠지만 다 되잖음? 샤딩 키 선정만 잘하면 됨
@밀우 파티셔닝이랑 샤딩이랑 다른데 무슨소리임 분산환경으로 넘어가는순간 일관성 보장이 안되는거임 보장할거면 샤딩할 필요가 없는거고 성능쓰레기되는데
@백갤러4(61.75) 아니 에초에 분산환경이랑 샤딩이랑 다른거임.. 샤딩은 키 자체를 쪼개서 데이터를 저장하는거고 분산환경은 동일 키의 데이터를 여러 DB에 저장하는거고
@밀우 샤딩이 분리된 인스턴스에 나누어서 쓰는건데
@백갤러4(61.75) 분리된 인스턴스에 '샤딩 키'를 기준으로 데이터를 나누어 쓰는게 샤딩이지. 샤딩 키 기준으로 나누니깐 분리된 인스턴스끼리 데이터가 겹치지 않음.
@밀우 읽을때 인스턴스 한개에서만 읽어올거임? 샤딩키가 다른 데이터 여러개 읽으려면 어떻게할건데
@밀우 데이터가져와야하는데 이게 서버1,2에 있음 트랜잭션 시작하고 서버1을 먼저 읽는데 이때 조건에 만족하는 데이터가 서버2에서 삭제되면? 읽을거야?버릴거야?
@백갤러4(61.75) 아니 샤딩키라는건 RDB나 몽고DB나 차이가 안남. 몽고DB도 특정 키 기준으로 쪼개는거고 RDB 특정 키(주로 PK)기준으로 쪼개는건데. 에초에 샤딩 키로 선정된 데이터는 항상 동일 인스턴스에서 조회 될거니깐 물리적으로 샤딩키 하나로 조회하는데 여러 인스턴스를 조회할수가없다니깐
@밀우 데이터를 한건씩 읽어오냐고 데이터 만건 읽을려면 pk검색 만번 요청보낼거임?
@밀우 cap 다 되는데 그럼 성능좋은 nosql쓰지 왜 rdb씀
@백갤러4(61.75) 우선 몽고DB의 경우는 키 외에는 제약 조건이 없는게 장점이고 오라클은 여러 제약조건을 걸수있으니 쓰는거지. 그리고 니가말한걸 내가 이해하자면 몽고DB는 키에만 유니크 제약조건이 걸리게 되니 해당 키를 샤딩 키로 썻을때 데이터 일관성 문제가 전혀발생하지 않지만 만약 RDB에서 유니크 제약조건이 두 키에 걸리고 그 중 하나를 샤딩 키로 사용했을 때 다른 키의 유니크 제약조건을 어떻게 만족할 수 있는가 라고 이해하면 됨?
@밀우 아니 한 트랜잭션에 여러 서버조회하는경우가 없냐고 애플리케이션에서
@백갤러4(61.75) 있겠지?
@밀우 다 pk=1해서 데이터 1건씩만 찾아오는거 아니고 full scan때리면 서버 여러개 트랜잭션으로 묶어야하는데 이때 일관성이 100퍼보장하면 성능 박으니까 포기한다고
@백갤러4(61.75) 흠 내가 몽고DB 깊게 안파서 모르는데 몽고DB는 트랜잭션이 아예 없음?
@밀우 보장할순 있겠지 근데 성능이 안좋다니까 트랜잭션중에 서버간 동기화가 필요하니까 그렇게할거면 rdb에 비해 이점이 없는거지
@백갤러4(61.75) 흠 하긴 뭐 강한 트랜잭션 제약 때문에 분산된 물리환경에서 성능 좆박는건 어쩔수 없긴 하겠다