2009-08-31 27 views

Trả lời

11

DB Generator:

  • dễ dàng để đảm bảo nó là duy nhất
  • Nhu cầu thêm khứ hồi (bạn phải đọc ID được tạo ra sau)
  • Thông thường khá đơn giản (sequence)
  • Khi các giao dịch được cuộn lại, các khoảng trống có thể xuất hiện theo trình tự (nhờ Kristen để chỉ ra điều này).

App ID Generator

  • Có thể phức tạp như bạn cần (ví dụ, bạn có thể mã hóa các loại đối tượng trong ID nếu bạn muốn)
  • cứng để làm duy nhất (trừ khi bạn sử dụng UUIDs)
  • Bạn có thể gán một ID ngay cả khi không nói chuyện với DB

[EDIT] Kể từ UUIDs là khá đắt (không hỗ trợ bản địa trong nhiều DBS, chỉ số fragmenta tion, vv), hầu hết các ứng dụng sử dụng trình tạo dựa trên DB.

+0

Cảm ơn bạn đã có danh sách đó. Có cách nào tốt nhất để đặt Id Generator? DB Generator dễ nghe hơn. – bastianneu

+0

Xem các chỉnh sửa của tôi. Trừ khi bạn viết phần mềm phân cụm, bộ tạo thường nằm trong DB. –

+0

Tôi thích câu trả lời này nhất, gây ra một Danh sách đơn giản với những điểm quan trọng mà bạn phải xem xét. Cảm ơn bạn! – bastianneu

8

Một điều cần nhớ là không phải tất cả chèn vào cơ sở dữ liệu đều đến từ ứng dụng. Để sử dụng một hướng dẫn ứng dụng điều khiển thực sự sẽ làm tổn thương bạn khi bạn có được một khách hàng mới và phải di chuyển 100.000 hồ sơ từ nhà cung cấp cuối cùng của họ.

+0

tôi xin lỗi tôi không nhận được điểm từ câu trả lời của bạn. Có ai có thể làm rõ điều đó không? – bastianneu

+3

Vấn đề là bạn đang đặt dữ liệu của bạn có nguy cơ nếu bạn tạo ra các định danh bất cứ nơi nào ngoại trừ cơ sở dữ liệu. – HLGEM

+1

+1, tùy thuộc vào cài đặt của bạn và số lượng hệ thống khác nhau mà bạn tương tác, có thể không đảm bảo rằng tất cả các bản ghi trong cơ sở dữ liệu của bạn sẽ được tạo từ bên trong ứng dụng của bạn. Bạn có thể được yêu cầu tại một thời điểm nào đó trong tương lai để kết hợp dữ liệu từ một nguồn bên ngoài, hoặc là một lần di chuyển (như HLGEM gợi ý) hoặc như là một phần của quá trình tải hàng loạt. Trong cả hai trường hợp, sẽ khó tải nhiều hơn những bản ghi đó nếu ID của bạn xuất phát từ trong ứng dụng. Bạn có thể có một dịch vụ web hoặc một số loại API khác, nhưng điều đó sẽ có tác động hiệu suất. –

2

Tôi nghĩ điều quan trọng nhất là bạn chọn thứ gì đó có thể được doanh nghiệp của bạn sử dụng làm định danh. Ví dụ: DMV đặt số giấy phép của bạn ngay trên thẻ và nếu bạn quên ví của mình và nhớ số, nó có thể được sử dụng để xác minh danh tính của bạn (ví dụ: khi bị cảnh sát kéo lên). Bạn sẽ không đặt UUID trên thẻ.

Ẩn số nhận dạng khỏi doanh nghiệp của bạn có thể gây ra nhiều nhầm lẫn, do đó hãy chọn thứ gì đó mà bạn không ngại nói với khách hàng, khách hàng hoặc đối tác kinh doanh. Tôi không nói rằng tất cả mọi người sẽ có thể ghi nhớ nó, nhưng ít nhất bạn cũng nên đọc nó cho ai đó qua điện thoại nếu bạn đang xem biên nhận (ví dụ).

Có ngoại lệ cho hiệu suất, tất nhiên, nhưng những trường hợp này nên được sử dụng cẩn thận và không bị ràng buộc với số nhận dạng doanh nghiệp.

Xem liên quan của tôi blog post

+0

+1 tốt đẹp đọc. Cảm ơn bạn đã liên kết – bastianneu

+2

Vui lòng không kết hợp các phím kinh doanh và các phím kỹ thuật. Mã định danh là các khóa kỹ thuật để xác định duy nhất một đối tượng (ví dụ như trong khóa ngoài). Chúng chơi tốt với các chỉ mục, chúng nhỏ và nhất quán theo cách này hay cách khác. Các khóa kinh doanh (như số giấy phép) là những gì bạn hiển thị bên ngoài nhưng vì chúng không đáng tin cậy (chúng có thể thay đổi theo bất kỳ cách nào và chúng tuân theo thực tế, không phải quy tắc), bạn không được phụ thuộc vào chúng như khóa chính. Hãy suy nghĩ tên: Tên của bạn có thể thay đổi khi bạn kết hôn. Hoặc bạn có thể có hai "John Smith" với cùng ngày sinh trong cơ sở dữ liệu của bạn. –

+0

@Aaron: "Vui lòng không trộn các khóa kinh doanh và các phím kỹ thuật". Tôi không nhầm lẫn giữa họ, tôi đặc biệt giải quyết sự khác biệt. @Aaron: "có hai John Smith cùng ngày sinh" Đó là lý do kinh doanh để phát minh ra một số nhận dạng mới, không phải là lý do kỹ thuật. –

Các vấn đề liên quan