저는 여가 시간에 소파 DB를 사용하여 상당한 작업을 해왔고 실제로 사용하는 것을 즐깁니다. 관계형 데이터베이스를 사용하는 것보다 훨씬 유연하다는 것을 알았지 만 단점이없는 것은 아닙니다.null 값을 사용하여 Couch DB 뷰를 만드는 데 문제가 있습니까?
하나의 큰 단점은 동적 쿼리/뷰 생성이 부족하다는 것입니다. 따라서 뷰를 계획하고 정당화 할 때 상당량의 작업을 수행해야합니다. SQL과 관련이 있습니다.
{
"_id": "blah",
"type": "user",
"name": "Bob",
"email": "[email protected]",
"password": "blah",
}
이 중복 계정의 생성을 방지하기 위해, 나는를 생성하는 아주 기본적인보기를 썼다 : 예를 들어
는,이 같은 조금 보이는 JSON 문서 템플릿을 기반으로 로그인 방식을 썼다 조회 할 사용자 이름 목록 :
emit(doc.name, null)
이것은 나에게 상당히 효율적으로 보였습니다. 나는 그것이 전체 문서 목록을 드래그하는 것보다 더 낫다고 생각한다. 따라서 이메일 주소 목록을 작성하는 것과 똑같은 일을했습니다.
emit(doc.email, null)
이 질문은 어디에서 볼 수 있습니까?
관계형 데이터베이스 (SQL 사용)에서는 동일한 테이블에 대해 두 번의 쿼리 만 수행합니다. 이 기법 (SQL 쿼리 결과에 대한 뷰를 동일시 함)은 어떤면에서 유사할까요?
성능/효율성 문제가 있습니다 ... 두 가지보기가 실제로 하나 일 뿐이 냐고요? 또는 키와 관련 가치가없는 Couch DB보기를 사용하는 것이 효과적인 방법입니까? 위의 예제를 고려하면 두 뷰 모두 로그인 구성표를 벗어난 용도로 사용됩니다 ... 사용자 이름 목록을 생성해야하는 경우 추가 오버 헤드없이 검색 할 수 있습니다.
당신은 어떻게 생각하십니까?
'emit (doc.name, null)'으로 뷰를 생성하는 것은 SQL 테이블의'name' 컬럼에 인덱스를 만드는 것과 유사합니다. 그래서 이것은 관계형 데이터베이스에서하는 것과 다르지 않습니다. –