Tôi có một bảng tổ chức như thế này:Tìm kiếm dữ liệu từ các bảng năng động sử dụng Microsoft SQL Server
OrgID | OrgInviteCode | OrgName | Status | ProjectTableName | InsertOn
-------------------------------------------------------------------------------------------
1 | RC12T67 | Organization1 | Active | Project1 | 2015-12-19 15:37:43.333
2 | BC56uI7 | Organization2 | Active | Project2 | 2015-12-19 15:37:43.333
3 | ORG1456 | Organization3 | Active | Project3 | 2015-12-19 15:37:43.333
4 | ORG2856 | Organization4 | Active | Project4 | 2015-12-19 15:37:43.333
Và tôi có một thủ tục lưu trữ để tạo ra một bảng năng động cho dự án.
Nếu có tổ chức mới được tạo thành công thì chúng tôi gọi thủ tục đã lưu trữ để tạo bảng dự án cho tổ chức đó.
Mỗi tổ chức có bảng dự án riêng. Vì vậy, tên bảng dự án là động cho mỗi tổ chức và tên của nó được lưu trữ trong bảng tổ chức.
Organization1 -> bảng Project
ProjectID | OrgID | ProjectName | ProjectInvideCode | Address1 | Address2 | City |State | ZIP | Country
-------------------------------------------------------------------------------------------------------------------------------
1 | 1 | Org1Proj1 | XJ34590 | 235 Harrison St. | | Syracuse | AK | 23456234 | US
2 | 1 | Org1Proj2 | JKI8907 | 35 Sterling St. | | Syracuse | NY | 23456456 | US
Organization2 -> bảng Project
ProjectID | OrgID | ProjectName | ProjectInvideCode | Address1 | Address2 | City |State | ZIP | Country
-------------------------------------------------------------------------------------------------------------------------------
1 | 2 | Org2Proj1 | RUIO90 | 90 Ram St. | | Los Angeles | CA | 23456234 | US
2 | 2 | Org2Proj2 | KLOP907 | 35 Wide St.| | Chicago | IL | 23456456 | US
Tôi hiện đang làm việc trong tích hợp tính năng tìm kiếm. Người dùng hoặc Người dùng ẩn danh có thể tìm kiếm dữ liệu dựa trên logic bên dưới:
- Tìm kiếm với tên tổ chức hoặc mã mời tổ chức.
- Tìm kiếm với tên dự án hoặc mã dự án.
- Tìm kiếm với địa chỉ dự án, thành phố, tiểu bang, quốc
Tôi biết nó rất đơn giản để tìm ra kết quả tìm kiếm cho tên tổ chức và mời mã, bởi vì tất cả các nội dung là nằm trong cùng một bảng.
Nhưng sẽ phức tạp hơn nếu nhận được kết quả tìm kiếm cho các dự án (tên hoặc mã mời) do tên bảng động. Tôi tìm thấy liên kết này trong How to fetch data from dynamic multiple tables?, vì vậy tôi nghĩ rằng đó không phải là giải pháp tốt hơn vì tìm kiếm cần rất nhanh.
Lý do tại sao chúng tôi tách các bảng dự án dựa trên tổ chức vì trong yêu cầu của chúng tôi, chúng đề cập rõ ràng rằng "Chúng tôi có 1000000 tổ chức, nhưng mỗi tổ chức có hơn 1 triệu dự án". Hy vọng bạn hiểu khái niệm chúng tôi không muốn đổ các dự án 1000000 (Tổ chức) * 1 triệu = XXXXXX trong một bảng.
Câu hỏi:
- Làm sao chúng ta có thể tìm kiếm các dữ liệu dự án theo cách hiệu quả?
- Khái niệm bảng riêng biệt của dự án của chúng tôi có tệ nhất không? Bạn có bất cứ đề nghị để xử lý tốt hơn nhiều?
- Có cách nào hiệu quả trong C# không?
Công cụ và Công nghệ:
- Asp.Net 4.5, C#
- MVC mã 5
- Entity Framework đầu tiên
- SQL Server 2012
Hết sức tò mò, tại sao bạn không muốn đổ 1 triệu tổ chức với 1 triệu dự án vào một bảng? Tôi có nghĩa là, điều này nghe có vẻ như rất nhiều dữ liệu, vì vậy thay vì hack với SQL Server và các bảng 1T, có lẽ bạn cần một kiến trúc cơ sở dữ liệu hiệu năng cao được phân phối thay thế? –
@KeithPayne AFAIK nó không có ý nghĩa để giữ những dữ liệu trong bảng duy nhất .. Chúng tôi đã biết dữ liệu là rất lớn vì vậy trong khi xây dựng từ đầu chúng tôi phải thiết kế cơ sở dữ liệu với sự tôn trọng dữ liệu, khả năng mở rộng, hiệu suất vv .. – Chandru
Bạn dự định có bao nhiêu bảng? 1 triệu tổ chức x 1 triệu dự án = 1 nghìn tỷ. Bạn có muốn thiết kế hệ thống để xử lý 1 nghìn tỷ bảng? Bạn đã kiểm tra các thông số kỹ thuật trên tối đa SQL Server chưa? Và sau đó, bạn sẽ lập chỉ mục danh sách các bảng như thế nào? Chỉ mục được sắp xếp phải được duy trì ở đâu đó để bạn có thể liên kết bảng của mình với dự án org +. Chỉ số sẽ được lưu trữ ở đâu? –