Các quy ước đặt tên cho MongoDB là gì?


185

Có một tập hợp các quy ước đặt tên ưa thích cho các quyền của MongoDB như cơ sở dữ liệu, bộ sưu tập, tên trường không?

Tôi đã suy nghĩ dọc theo những dòng này:

  • Cơ sở dữ liệu: bao gồm mục đích (từ số ít) và kết thúc bằng hàm db db - tất cả chữ thường: imagedb, resumedb, Memberdb, v.v.
  • Bộ sưu tập: số nhiều trong chữ thường: hình ảnh, sơ yếu lý lịch,
  • Các trường tài liệu: lowCamelCase, ví dụ: MemberFirstName, fileName, v.v.

Câu trả lời:


125
  1. Giữ ngắn gọn: Tối ưu hóa lưu trữ các đối tượng nhỏ , SERVER-863 . Ngớ ngẩn nhưng đúng.

  2. Tôi đoán khá nhiều quy tắc tương tự áp dụng cho cơ sở dữ liệu quan hệ nên áp dụng ở đây. Và sau nhiều thập kỷ, vẫn không có thỏa thuận nào về việc các bảng RDBMS nên được đặt tên là số ít hay số nhiều ...

  3. MongoDB nói tiếng JavaScript, vì vậy hãy sử dụng các quy ước đặt tên JS của camelCase.

  4. Tài liệu chính thức của MongoDB đề cập đến bạn có thể sử dụng dấu gạch dưới, cũng là tên định danh tích hợp được đặt tên _id(nhưng điều này có thể chỉ ra rằng nó _idđược dự định là riêng tư, nội bộ, không bao giờ được hiển thị hoặc chỉnh sửa.


95
3 và 4 là loại mâu thuẫn - JS thích áo choàng, Mongo có vẻ thích đồ lót hơn ... nhưng khi nghi ngờ, hãy chọn phần dưới. Những người quen với bảng chữ cái phi Latin sẽ cảm ơn bạn.
Matt Zukowski

1
Xem câu hỏi này cho cuộc tranh luận đơn và số nhiều: stackoverflow.com/questions/338156/iêu
Jason

4
Tôi không chắc chắn tôi sẽ nói "JS thích lạc đà". Bản thân JS không có sở thích nào, nhưng có lẽ đúng khi nói rằng hầu hết các lập trình viên JS có xu hướng sử dụng vỏ lạc đà.
cây

1
@treeface Tôi nghĩ rằng Matt đã đề cập đến thực tế các phương thức tích hợp sẵn của JS đều sử dụng camelCase, cả trong nút và trong trình duyệt
Luke Taylor

1
Mã định danh _idtích hợp rất có thể có tiền tố gạch dưới để tuân theo quy ước JavaScript phổ biến cho biết khóa đó có nghĩa là khóa nội bộ / khóa riêng. Nói cách khác, _idmục đích không bao giờ được chỉnh sửa hoặc trình bày cho bất kỳ ai xem dữ liệu của bộ sưu tập.
Beau Smith

55

CƠ SỞ

  • lạc đà
  • nối thêm DB vào cuối tên
  • làm số ít (bộ sưu tập là số nhiều)

MongoDB nêu một ví dụ hay:

Để chọn cơ sở dữ liệu để sử dụng, trong trình vỏ mongo, hãy đưa ra câu lệnh <db>, như trong ví dụ sau:

sử dụng myDB
sử dụng myNewDB

Nội dung từ: https://docs.mongodb.com/manual/core/database-and-collections/#database

THU THẬP

  • Tên viết thường: tránh các vấn đề về độ nhạy trường hợp, tên bộ sưu tập MongoDB phân biệt .

  • Số nhiều: rõ ràng hơn để gắn nhãn một bộ sưu tập một cái gì đó là số nhiều, ví dụ "tập tin" chứ không phải là "tập tin"

  • > Không có dấu phân cách từ: Tránh các vấn đề trong đó những người khác nhau (không chính xác) các từ riêng biệt (tên người dùng <-> user_name, First_name <->
    Firstname). Điều này được đưa ra để tranh luận theo một số người
    ở đây nhưng với điều kiện là đối số bị cô lập với tên bộ sưu tập Tôi không nghĩ nó nên;) Nếu bạn thấy mình cải thiện
    khả năng đọc tên bộ sưu tập của mình bằng cách thêm dấu gạch dưới hoặc
    camel Theo dõi bộ sưu tập của bạn Tên có lẽ quá dài hoặc nên sử dụng các
    khoảng thời gian thích hợp là tiêu chuẩn để
    phân loại bộ sưu tập .

  • Ký hiệu chấm cho các bộ sưu tập chi tiết cao hơn: Cung cấp một số chỉ dẫn về cách các bộ sưu tập có liên quan. Ví dụ, bạn có thể chắc chắn chắc chắn rằng bạn có thể xóa "users.pagevisits" nếu bạn đã xóa "người dùng", miễn là những người thiết kế lược đồ đã làm rất tốt.

Nội dung từ: http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html

Đối với các bộ sưu tập tôi đang theo các mẫu được đề xuất này cho đến khi tôi tìm thấy tài liệu MongoDB chính thức.


25

Ngay cả khi không có quy ước nào được chỉ định về điều này, các tham chiếu thủ công vẫn được đặt tên theo bộ sưu tập được tham chiếu trong tài liệu Mongo, cho các mối quan hệ một-một. Tên luôn theo cấu trúc <document>_id.

Ví dụ: trong một dogsbộ sưu tập, một tài liệu sẽ có các tham chiếu thủ công đến các tài liệu bên ngoài có tên như sau:

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

Điều này tuân theo quy ước Mongo về việc đặt tên _idđịnh danh cho mọi tài liệu.


1
tôi đã không đề cập đến camelCase trong câu trả lời của mình, vì vậy tôi sẽ sử dụngowner_id
danza

7

Quy ước đặt tên cho bộ sưu tập

Để đặt tên cho một bộ sưu tập, một số biện pháp phòng ngừa được thực hiện:

  1. Một bộ sưu tập có chuỗi rỗng (dòng VIỆT) không phải là tên bộ sưu tập hợp lệ.
  2. Tên bộ sưu tập không được chứa ký tự null vì điều này xác định phần cuối của tên bộ sưu tập.
  3. Tên bộ sưu tập không nên bắt đầu với hệ thống tiền tố. vì điều này được dành riêng cho các bộ sưu tập nội bộ.
  4. Sẽ không tốt nếu không chứa ký tự Cấm $ USD trong tên bộ sưu tập vì nhiều trình điều khiển khác nhau có sẵn cho cơ sở dữ liệu không hỗ trợ Cẩu $ USD trong tên bộ sưu tập.

    Những điều cần lưu ý trong khi tạo tên cơ sở dữ liệu là:

  5. Cơ sở dữ liệu có chuỗi rỗng (phiên bản) không phải là tên cơ sở dữ liệu hợp lệ.
  6. Tên cơ sở dữ liệu không thể nhiều hơn 64 byte.
  7. Tên cơ sở dữ liệu là phân biệt chữ hoa chữ thường, ngay cả trên các hệ thống tệp không phân biệt chữ hoa chữ thường. Vì vậy, nó là tốt để giữ tên trong trường hợp thấp hơn.
  8. Một tên cơ sở dữ liệu không thể chứa bất kỳ ký tự nào trong số các ký tự /, \,., Rò, *, <,>,:, |,?, $, Nghi. Nó cũng không thể chứa một khoảng trắng hoặc ký tự null.

Để biết thêm thông tin. Vui lòng kiểm tra liên kết dưới đây: http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html


3

Tôi nghĩ đó là tất cả sở thích cá nhân. Sở thích của tôi đến từ việc sử dụng NHibernate, trong .NET, với SQL Server, vì vậy chúng có thể khác với những gì người khác sử dụng.

  • Cơ sở dữ liệu: Ứng dụng đang được sử dụng .. ví dụ: Stackoverflow
  • Bộ sưu tập: Tên đơn lẻ, đây sẽ là một bộ sưu tập, ví dụ: Câu hỏi
  • Các trường tài liệu, ví dụ: MemberFirstName

Thành thật mà nói, nó không thành vấn đề quá nhiều, miễn là nó phù hợp với dự án. Chỉ cần đi làm và không đổ mồ hôi chi tiết: P


1
Tôi nghĩ cái có thể gây hậu quả là các trường tài liệu, vì chúng sẽ được lưu trữ bên trong mỗi tài liệu. Như Tomasz đã chỉ ra, giữ chúng ngắn sẽ tiết kiệm không gian / băng thông. Tôi nghĩ rằng điều quan trọng hơn nhiều là bạn sử dụng một cái gì đó làm cho nó dễ hiểu, mặc dù.
Rex Morgan

2

Cho đến khi chúng tôi nhận được SERVER-863 giữ tên trường càng ngắn càng tốt, đặc biệt là khi bạn có nhiều hồ sơ.

Tùy thuộc vào trường hợp sử dụng của bạn, tên trường có thể có tác động rất lớn đến việc lưu trữ. Không thể hiểu tại sao đây không phải là ưu tiên cao hơn cho MongoDb, vì điều này sẽ có tác động tích cực đến tất cả người dùng. Nếu không có gì khác, chúng ta có thể bắt đầu mô tả nhiều hơn với tên trường của mình, mà không cần suy nghĩ hai lần về băng thông và chi phí lưu trữ.

Hãy bỏ phiếu .


Chỉ để cập nhật những người đọc tiềm năng trong tương lai của câu trả lời này, MongoDB đã nén những ngày này, vì vậy tên trường dài không thực sự là một vấn đề nữa.
Hubro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.