2009-02-27 25 views
34

http://tagging.pui.ch/post/37027745720/tags-database-schemasLược đồ thẻ nào hiệu quả nhất?

Xử lý thẻ của Stackoverflow là một trong những điều tốt nhất mà tôi đã thấy cho đến thời điểm này.

Có ai biết nếu đó là mẫu lược đồ tôi có thể lấy một số ý tưởng từ đó không?

Nếu không, tôi chỉ đang tìm kiếm các đề xuất về những sơ đồ thẻ nào mà những người khác đã triển khai thành công.

+2

Thật câu hỏi hay! –

Trả lời

18

Tất cả đều phụ thuộc vào khối lượng và nội dung dữ liệu để gắn thẻ tỷ lệ phân phối và mật độ

Nếu bạn có một phân phối thẻ thấp và tỷ lệ mật độ (điển hình của con người tạo ra dữ liệu), bạn chỉ có thể tạo ra một id duy nhất hoặc băm cho mỗi bộ sưu tập có thể có các thẻ được sử dụng bởi các dữ liệu. Kết hợp 'bộ sưu tập thẻ' id với mỗi trường hợp dữ liệu với những thẻ

này có thể làm việc cũng đáng ngạc nhiên đối với nhiều hình thức con người dữ liệu được tạo

ví dụ Stackoverflow có ~ 500,000 câu hỏi và ~ 20.000 thẻ (quá nhiều thẻ dupe-ish!). Hầu hết các câu hỏi có ít hơn năm thẻ. Trong trường hợp xấu nhất, bạn sẽ có 500.000 thẻ 'thu thập thẻ' để liên kết, nhưng thực tế hơn bạn sẽ có vài nghìn

Bạn cũng sẽ phải có theo dõi cá thể hoặc thu gom rác trên bộ sưu tập 'thu thập thẻ' dưới dạng kết hợp cụ thể thẻ bị hết sử dụng

ví dụ:

  • Tag: id, tagname
  • TagCollection: id, instanceCount
  • TagCollectionTag: tagCollectionIId, tagId
  • dữ liệu: id, title, nội dung, tagCollectionId

thẻ Chèn nhanh nếu băm được sử dụng (băm trên tất cả các thẻ của bộ sưu tập). Nếu không, bạn phải tìm kiếm các bộ sưu tập TagCollection và TagCollectionTag, nhưng điều này không được quá lớn anyway

Tìm kiếm nhanh; tìm kiếm TagCollectionTag cho các trường hợp có chứa các thiết lập cụ thể của thẻ, và sau đó tìm dòng dữ liệu với bất kỳ của những nhân tagCollectionId

Hope đó không phải là quá khó hiểu :-)

+0

+1 ers, bất kỳ phản hồi nào về cách thức hoạt động của bạn? – TFD

+0

+1 Tôi đã đọc câu trả lời này 1 năm trước. Sau một năm, tôi cũng kết thúc tìm kiếm câu trả lời này lần nữa :). Cảm ơn trước. Bạn có thể plz che một số ánh sáng trên phần '(hash trên tất cả các thẻ của bộ sưu tập)', bạn có nghĩa là để tạo ra một hash kết hợp tất cả các thẻ tương ứng với bộ sưu tập với logic ứng dụng, hoặc tôi có thể nhận được sự giúp đỡ từ cơ sở dữ liệu chính nó. Loại lược đồ băm nào sẽ tốt nhất ở đây? – Sage

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