2010-02-03 30 views
8

Tôi sắp chuyển một số thực thể của mình từ danh tính thành trình tạo id hilo.Máy phát NHibernate và hilo: cách thiết kế bàn phím?

Tôi không có đầu mối về cách các bảng giữ giá trị cao tiếp theo sẽ được thiết kế.

  • tôi có nên sử dụng một bảng duy nhất cho tất cả các thực thể hoặc cho một nhóm các thực thể liên quan không?
  • tôi có nên sử dụng một bảng khác cho từng pháp nhân không?
  • tôi có nên sử dụng một bảng duy nhất với một hàng hoặc cột khác cho mỗi thực thể không?

Có phương pháp hay nhất nào không? Những gì cần phải được xem xét? Có bất kỳ ưu điểm hay nhược điểm nào cho bất kỳ phương pháp nào không?

Trả lời

3

Tôi không nghĩ rằng có một thực hành "tốt nhất" duy nhất, nhưng điều quan trọng là phải hiểu như thế nào HiLo hoạt động:

  • Các máy phát điện bảng Hilo được thiết kế cho cơ sở dữ liệu mà không hỗ trợ trình tự, mà là một hơn phù hợp tự nhiên cho nhiệm vụ này.
  • Giá trị Hi cho một lớp được truy lục và cập nhật lần đầu tiên bạn lưu một phiên bản của lớp đó hoặc khi bạn hết giá trị Lo.
  • Giá trị khác Hi Hi được sử dụng cho mỗi lớp.

Vì vậy, bạn sẽ phải xem xét ít nhất hai biến:

  • cãi. Bạn có thể cải thiện hiệu suất một chút bằng cách sử dụng các bảng riêng biệt
  • Phạm vi. Với một cơ sở dữ liệu rất lớn, bạn có nguy cơ lớn hơn khi cuối cùng cạn hết các giá trị Hi.

Sau khi xem xét, đó chỉ là vấn đề về hương vị.

+0

Vì vậy, bạn sẽ cân nhắc sử dụng các bảng riêng biệt? Contention: bạn có nghĩa là các giao dịch đồng thời không? Làm thế nào nên một bảng duy nhất ảnh hưởng đến hiệu suất? Bằng cách khóa vào nó? Mặt khác, khi sử dụng nhiều bảng có nhiều lựa chọn và cập nhật hơn, một cho mỗi bảng bị ảnh hưởng. Một kết hợp có thể hữu ích: một bảng cho mỗi nhóm các bảng có liên quan. –

+0

Có, tôi muốn sử dụng các bảng riêng biệt, vì các khóa. Số lượng lựa chọn/cập nhật là như nhau, bởi vì giá trị máy phát điện không được chia sẻ giữa các lớp, ngay cả khi bạn sử dụng cùng một bảng. Một lần nữa, hãy lưu ý đến khái niệm chính: đây chỉ là sử dụng một bảng làm trình tạo chuỗi. –

+0

Tại sao số lượng lựa chọn/cập nhật giống nhau? Khi tôi có một bảng duy nhất, tại sao nó nên chọn và cập nhật cùng một bảng cho mỗi lớp mà nó cần id cho? –

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