Bất cứ ai sử dụng HVELyId trong sản xuất? Có đáng tin cậy không?


21

Có ai đang sử dụng HVELyId trong sản xuất thực tế với các bảng có kích thước hợp lý, hơn vài nghìn hàng không? Có đáng tin cậy / hiệu suất? Cho đến nay tôi không tìm thấy bất cứ ai không liên kết với nhà cung cấp giới thiệu nó và Paul Nielsen khuyên chống lại nó ở đây .

Kinh nghiệm của bạn khi sử dụng HVELyId trong các hệ thống sản xuất thực tế là gì?

Những tiêu chí nào bạn đã sử dụng khi bạn chọn HVELyId trên các lựa chọn thay thế?

Câu trả lời:


8

Tôi đã triển khai HVELyID và thấy nó cung cấp hiệu suất tốt và dễ sử dụng.

Tôi đã sử dụng nó trên các bộ dữ liệu tương đối nhỏ (hàng chục nghìn hàng) với hệ thống phân cấp sâu tới 10 nhánh.

Tại sao sử dụng nó? Kiểu HVELyID cung cấp một số phương thức của trình trợ giúp (chẳng hạn như IsDescendantOf) giúp công việc của bạn dễ dàng hơn so với việc cuộn đường dẫn cụ thể của riêng bạn.

Nhận xét của Paul Nielsen về StackOverflow rất khó hiểu với tôi - HVELyID một con đường cụ thể hóa. Tôi có khuynh hướng đồng ý với nhận xét này bên dưới câu trả lời của anh ấy.

Một câu hỏi tốt hơn có thể là "tại sao không sử dụng nó". Thật dễ sử dụng, cung cấp rất nhiều chức năng mà nếu không bạn sẽ tự viết và thực hiện tốt (trong các thử nghiệm giới hạn của tôi).


+1 Làm thế nào để bạn đảm bảo tính toàn vẹn của dữ liệu của bạn? Bạn có thể sử dụng các ràng buộc để đảm bảo không có trẻ mồ côi?
AK

3
Từ bộ nhớ bạn có thể. Bạn sẽ sử dụng một hàm trên HVELyID để xác định giá trị cha, tạo cột được tính toán bền vững cho giá trị đó và sau đó áp dụng ràng buộc FK giữa giá trị đó và giá trị cha.
Kirk Broadhurst

5

Đây là một câu trả lời cho câu hỏi của Kirk 'tại sao không sử dụng nó (HVELyId)'. So với đường dẫn cụ thể hóa, trong một số trường hợp quan trọng HVELyId dường như vừa kém hiệu quả hơn vừa kém thuận tiện để làm việc.

Lý do rất đơn giản: trích dẫn từ bình luận của Microsoft về Connect , "Vấn đề là các cuộc gọi CLR, bao gồm các phương thức của hVELyID, không rõ ràng đối với trình tối ưu hóa truy vấn. sai rồi."

Mặt khác, việc thực hiện đường dẫn cụ thể hóa rất dễ dàng trong lần đầu tiên chúng ta cần thực hiện và lần sau nó thực chất là một nhiệm vụ sao chép và dán. Vì vậy, chúng tôi có được một giải pháp linh hoạt hơn và hoạt động tốt hơn với rất ít nỗ lực.

Vì vậy, tôi hoàn toàn đồng ý với Paul Nielsen, người đã viết trong cuốn sách xuất sắc của mình có tựa đề "Kinh thánh Microsoft® SQL Server® 2008" như sau: "HVELyID mới không phải là không có tranh cãi. Nó mới và có nhiều thời gian báo chí và giới thiệu, nhưng tôi Tôi không chắc đó là vấn đề cần giải pháp khác. "


3

Công ty tôi sử dụng HeirachyID trong bán hàng trực tiếp, phần mềm tiếp thị đa cấp. Nó hoạt động. Tôi chưa thực sự làm bất kỳ công việc nào với nó Tôi chỉ biết chúng tôi đang sử dụng nó.

Vấn đề lớn nhất mà tôi gặp phải là chúng ta đang lặp đi lặp lại qua các cấp độ theo kiểu lặp thay vì dựa trên thiết lập nhiều hơn. Trong lĩnh vực đó, nó không hoạt động tốt cho chúng tôi, nhưng tôi không chắc đó có phải là vấn đề với loại hoặc việc chúng tôi thực hiện hay không.


Jack, bàn của bạn lớn cỡ nào? Làm thế nào bạn chọn sử dụng HVELyId trên các lựa chọn thay thế của nó?
AK

Vì tôi không bật thông báo email nên tôi chưa bao giờ thấy bình luận này. Các bảng của chúng tôi nằm trong hàng trăm ngàn hiện tại không phải là hàng triệu. Tôi đã không làm việc với công ty khi quyết định sử dụng HVELyID được đưa ra, vì vậy tôi không chắc tại sao nó lại được chọn, ngoài ra đó là cách mới vào thời điểm đó.
Jack Corbett

1

Một vấn đề với hệ thống phân cấp là bạn có được nhà cung cấp khóa. Nhưng tôi đã tìm thấy một bài viết tuyệt vời của Adam Milazzo về cách mọi thứ hoạt động bên trong:

http://www.adammil.net/blog/view.php?id=100

Với điều này, tôi đã có thể viết một tập lệnh Postgres để chuyển đổi tập dữ liệu của mình từ MSSQL. Cũng bao gồm nó trong tập lệnh tôi đã viết để nhập cơ sở dữ liệu AdventureWorks vào Postgres:

https://github.com/lorint/AdvojiWorks-for-Postgres

Chỉ cần tìm kiếm "hVELyid" trong tệp install.sql ở đó và bạn sẽ sớm tìm thấy các tài liệu tham khảo để chuyển đổi nó.


0

Nhóm của chúng tôi đã triển khai nó trong sản xuất, lúc đầu hiệu suất rất tốt, sau 2 năm, bảng hiện có 430.000 hàng và getroot và getdecocate mất 3 giây, cả hai đều được yêu cầu để tính giá trị Id tiếp theo để chèn bản ghi. Bây giờ, một lần chèn cây con mất khoảng 16 giây không thể chấp nhận được.

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.