IT박스

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

itboxs 2020. 6. 1. 19:22
반응형

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. A database with empty string (“”) is not a valid database name.
  6. Database name cannot be more than 64 bytes.
  7. Database name are case-sensitive, even on non-case-sensitive file systems. Thus it is good to keep name in lower case.
  8. A database name cannot contain any of these characters “/, \, ., “, *, <, >, :, |, ?, $,”. It also cannot contain a single space or null character.

For more information. Please check the below link : http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html


I think it's all personal preference. My preferences come from using NHibernate, in .NET, with SQL Server, so they probably differ from what others use.

  • Databases: The application that's being used.. ex: Stackoverflow
  • Collections: Singular in name, what it's going to be a collection of, ex: Question
  • Document fields, ex: MemberFirstName

Honestly, it doesn't matter too much, as long as it's consistent for the project. Just get to work and don't sweat the details :P


Until we get SERVER-863 keeping the field names as short as possible is advisable especially where you have a lot of records.

Depending on your use case, field names can have a huge impact on storage. Cant understand why this is not a higher priority for MongoDb, as this will have a positive impact on all users. If nothing else, we can start being more descriptive with our field names, without thinking twice about bandwidth & storage costs.

Please do vote.

참고URL : https://stackoverflow.com/questions/5916080/what-are-naming-conventions-for-mongodb

반응형