SQL 모범 사례 없음
NoSQL 데이터베이스, OODB 또는 기타 두문자어에 대한 모범 사례는 무엇입니까?
예를 들어, 응용프로그램인 클라이언트에서 DB 문서(couchDB/mongoDB 용어)를 어떻게 해석해야 하는지를 결정하는 데 "유형" 필드가 사용되는 것을 자주 보았습니다.
해당되는 경우 PHP를 참조 언어로 사용합니다.읽기: DB 구조뿐만 아니라 클라이언트 측에서도 이러한 데이터를 가장 잘 처리할 수 있는 방법에 관심이 있습니다.즉, SQL DB(활성 레코드, 데이터 매퍼 등)에 대한 "ORM"과 같은 패턴도 찾고 있습니다.
이러한 DB와 PHP 5.3의 새로운 기능이 어떻게 함께 작동할 수 있는지에 대해 주저하지 마십시오.
현재 NoSQL 데이터 저장소와 문서 데이터베이스의 개념은 관계형 스토리지를 주도하는 기존의 개념과는 너무 새롭고 다르기 때문에 모범 사례가 거의 없다고 생각합니다.
이 시점에서 CouchDB(또는 다른 문서 데이터베이스) 내에 데이터를 저장하는 규칙은 관계형 데이터베이스의 규칙과 다소 다르다는 것을 알고 있습니다.예를 들어, 정상화와 3NF를 목표로 하는 것은 사람들이 노력해서는 안 되는 것이라는 것은 거의 사실입니다.일반적인 예 중 하나는 단순한 블로그의 예입니다.
관계형 저장소에는 "게시물", "댓글" 및 "작성자"에 대한 테이블이 각각 있습니다.각 작성자는 많은 게시물을 가지고 있으며 각 게시물에는 많은 주석이 있습니다.이것은 충분히 잘 작동하는 모델이며, 관계형 DB에 대해서도 잘 매핑됩니다.그러나 동일한 데이터를 docDB 내에 저장하는 것은 다소 다를 가능성이 높습니다.각 문서에는 자체 작성자와 주석 모음이 포함되어 있는 게시 문서 모음과 같은 것이 있을 수 있습니다.물론 그것이 당신이 할 수 있는 유일한 방법은 아닐 것이고, 그것은 다소 타협적인 것입니다. (지금은 단일 게시물에 대한 쿼리가 신속합니다. - 당신은 한 가지 작업만 수행하고 모든 것을 되찾습니다.) 그러나 당신은 작성자와 게시물 사이의 관계를 유지할 방법이 없습니다. (모든 것이 게시물 문서의 일부가 되기 때문입니다.)
저도 "유형" 속성을 사용하는 예를 본 적이 있습니다(CouchDB 예제).물론이죠, 그것은 실행 가능한 접근법처럼 들립니다.이게 제일 좋은 건가요?나는 단서를 얻지 못 했다.확실히 MongoDB에서는 데이터베이스 내에서 별도의 컬렉션을 사용하여 유형 속성을 완전히 무의미하게 만듭니다.하지만 카우치DB에서는...아마도 그것이 최선일 것입니다.다른 대안은?문서 유형별로 데이터베이스를 구분하시겠습니까?이것은 약간 바보같아서, 저는 스스로 "유형" 해결책에 기대고 싶습니다.하지만 그건 그저 저입니다.어쩌면 더 좋은 게 있을지도 몰라요.
저는 제가 여기서 꽤 많은 것을 횡설수설하고 거의 말을 하지 않았다는 것을 알고 있습니다. 아마도 당신이 이미 알고 있는 것은 아무것도 없을 것입니다.하지만 제 요점은 이것입니다. 저는 우리가 가지고 있는 도구와 우리가 함께 작업하고 있는 데이터를 실험하는 것은 우리에게 달려있다고 생각합니다. 그리고 시간이 지남에 따라 좋은 아이디어가 확산되고 모범 사례가 될 것입니다.저는 단지 당신이 게임 초반에 약간의 요구를 하고 있다고 생각합니다.
"NoSQL"은 특정 구조를 따르도록 애플리케이션을 구축하는 것이 아니라 애플리케이션 요구 사항을 준수하도록 데이터스토어를 구축하는 것에 중점을 두어야 합니다. 이는 기존 SQL 접근 방식에 가깝습니다.
관계형 데이터베이스를 "단순히" 포기하지 마십시오. 앱이 정말로 필요한 경우에만 이를 수행하십시오.
언급URL : https://stackoverflow.com/questions/2170152/nosql-best-practices
'programing' 카테고리의 다른 글
*모든* Excel interop 개체를 마샬을 사용하여 해제해야 합니까?ReleaseComObject? (0) | 2023.05.22 |
---|---|
왜 제가 "git push --setupstream origin"을 해야 합니까? (0) | 2023.05.22 |
postgresql의 월별 및 연도별 쿼리 결과 그룹화 (0) | 2023.05.17 |
Node.js의 ECONNRESET 오류를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
Windows에서 사용자 지정 URL 프로토콜을 등록하려면 어떻게 해야 합니까? (0) | 2023.05.17 |