[mongodb] MongoDB의 명명 규칙은 무엇입니까?

데이터베이스, 컬렉션, 필드 이름과 같은 MongoDB entitites에 대해 선호하는 명명 규칙이 있습니까?

나는이 라인을 따라 생각하고 있었다 :

  • 데이터베이스 : 목적 (단어로 된 단어)으로 구성되고 “db”로 끝납니다. 모두 소문자 : imagedb, resumedb, memberdb 등
  • 컬렉션 : 소문자로 된 복수형 : 이미지, 이력서,
  • 문서 필드 : lowerCamelCase (예 : memberFirstName, fileName 등)


답변

  1. 요약 : 작은 객체의 저장소 최적화 , SERVER-863 . 바보지만 사실입니다.

  2. 관계 데이터베이스에 적용되는 규칙과 거의 동일한 규칙이 여기에 적용되어야한다고 생각합니다. 그리고 수십 년이 지난 후에도 RDBMS 테이블을 단수 또는 복수로 명명해야하는지에 대한 합의는 여전히 없습니다

  3. MongoDB는 JavaScript를 사용하므로 camelCase의 JS 이름 지정 규칙을 사용하십시오.

  4. MongoDB 공식 문서에는 밑줄을 사용할 수 있다고 언급되어 있으며 내장 식별자도 지정되어 있습니다 _id(그러나 이것은 _id개인용, 내부 용, 절대로 표시되거나 편집되지 않음 을 나타냅니다) .


답변

데이터 베이스

  • 낙타
  • 이름 끝에 DB 추가
  • 단수하다 (모음은 복수형이다)

MongoDB는 좋은 예를 말합니다.

사용할 데이터베이스를 선택하려면 mongo 쉘에서 다음 예제와 같이 use <db> 문을 발행하십시오.

myDB
사용 myNewDB 사용

https://docs.mongodb.com/manual/core/databases-and-collections/#databases의 콘텐츠

컬렉션

  • 소문자 이름 : 대소 문자 구분 문제를 피하고 MongoDB 모음 이름은 대소 문자를 구분합니다.

  • 복수형 : 복수의 대상으로 된 콜렉션을 레이블링하는 것이 더 분명합니다 (예 : “파일”이 아닌 “파일”).

  • > 단어 구분 기호 없음 : 다른 사람이 잘못 단어를 구분하는 문제 (사용자 이름 <-> user_name, first_name <->
    이름)를 피하십시오. 이것은
    주변 의 몇몇 사람들에 의한 토론에 대한 것이지만, 주장이 컬렉션 이름과 분리되어 있다고 주장한다면 반드시 그렇게 생각해서는 안됩니다.;)
    밑줄이나
    낙타 를 추가하여 컬렉션 이름 의 가독성을 향상시키는 경우 name이 (가) 너무 길거나
    컬렉션
    분류 의 표준 인 기간을 적절하게 사용해야 합니다 .

  • 더 자세한 컬렉션을위한 점 표기법 : 컬렉션이 어떻게 관련되어 있는지에 대한 정보를 제공합니다. 예를 들어, 스키마를 디자인 한 사람들이 제대로 작업했다면 “users”를 삭제 한 경우 “users.pagevisits”를 삭제할 수 있다는 것을 합리적으로 확신 할 수 있습니다.

http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html의 내용

컬렉션의 경우 공식 MongoDB 설명서를 찾을 때까지 이러한 제안 패턴을 따르고 있습니다.


답변

이에 대한 규칙이 지정되지 않더라도 일대일 관계에 대해 수동 참조 는 Mongo 문서에서 참조 된 콜렉션의 이름을 일관되게 지정합니다. 이름은 항상 구조를 따릅니다 <document>_id.

예를 들어 dogs컬렉션에서 문서는 다음과 같은 외부 문서에 대한 수동 참조를 갖습니다.

{
  name: 'fido',
  owner_id: '5358e4249611f4a65e3068ab',
  race_id: '5358ee549611f4a65e3068ac',
  colour: 'yellow'
  ...
}

이것은 _id모든 문서의 식별자를 명명하는 Mongo 규칙을 따릅니다 .


답변

수집을위한 명명 규칙

컬렉션 이름을 지정하기 위해 몇 가지 예방 조치를 취해야합니다.

  1. 빈 문자열 (“”)이있는 컬렉션은 유효한 컬렉션 이름이 아닙니다.
  2. 콜렉션 이름의 끝을 정의하므로 콜렉션 이름에는 널 문자가 포함되지 않아야합니다.
  3. 컬렉션 이름은 접두사 “system”으로 시작해서는 안됩니다. 내부 컬렉션 용으로 예약되어 있습니다.
  4. 데이터베이스에 사용할 수있는 다양한 드라이버가 컬렉션 이름에서 “$”를 지원하지 않으므로 컬렉션 이름에 “$”문자를 포함하지 않는 것이 좋습니다.

    데이터베이스 이름을 만들 때 명심해야 할 사항은 다음과 같습니다.

  5. 빈 문자열 (“”)이있는 데이터베이스는 유효한 데이터베이스 이름이 아닙니다.
  6. 데이터베이스 이름은 64 바이트를 초과 할 수 없습니다.
  7. 데이터베이스 이름은 대소 문자를 구분하지 않는 파일 시스템에서도 대소 문자를 구분합니다. 따라서 이름을 소문자로 유지하는 것이 좋습니다.
  8. 데이터베이스 이름에는 이러한 문자“/, \,.,“, *, <,>, :, |,?, $,”를 사용할 수 없습니다. 단일 공백이나 널 문자도 포함 할 수 없습니다.

자세한 내용은. 아래 링크를 확인하십시오 : http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html


답변

나는 그것이 개인적인 취향이라고 생각합니다. 내가 선호하는 것은 SQL Server와 함께 .NET에서 NHibernate를 사용하는 것이므로 다른 사람들이 사용하는 것과 다를 수 있습니다.

  • 데이터베이스 : 사용중인 응용 프로그램. 예 : Stackoverflow
  • 컬렉션 : 단수의 이름, 컬렉션이 될 것, 예 : 질문
  • 문서 필드, 예 : MemberFirstName

솔직히 말해서 프로젝트에 일관된 한 너무 중요하지 않습니다. 그냥 일하고 세부 사항을 땀 흘리지 마십시오 : P


답변

SERVER-863 을 얻을 때까지 이 필드 이름을 가능한 짧게 유지 특히 레코드가 많은 경우에 좋습니다.

사용 사례에 따라 필드 이름이 스토리지에 큰 영향을 줄 수 있습니다. 캔 트는 이것이 모든 사용자에게 긍정적 인 영향을 미치기 때문에 이것이 왜 MongoDb에 우선 순위가 높지 않은지 이해합니다. 다른 것이 없다면 대역폭과 스토리지 비용에 대해 두 번 생각하지 않고 필드 이름을 더 잘 설명 할 수 있습니다.

제발 투표 .


답변