2010-08-03 35 views
12

Tôi đang thiết kế CMS trong C# và cần quyết định nơi lưu cài đặt cấu hình cho trang web. Cũng xem xét việc xác định các mẫu html cơ bản của tôi và sau đó xử lý chúng phía máy chủ để tạo các trang trước thời hạn.Cách nào đọc nhanh hơn một tệp XML hoặc truy vấn cơ sở dữ liệu

Vì vậy, thông thường chi phí nhanh hơn/ít hơn cho máy chủ đọc tệp XML hoặc truy vấn cùng một thông tin từ cơ sở dữ liệu cục bộ?

Trả lời

9

Có vẻ như khó xảy ra với tôi rằng đây sẽ là một nút cổ chai trong mã của bạn. Bạn có thường xuyên lên kế hoạch đọc cài đặt cấu hình không? Cấu hình thường là khá nhỏ và không thường xuyên đọc. Có những điều quan trọng hơn để xem xét về đâu và làm thế nào để lưu trữ nó:

  • Bootstrapping: có lẽ bạn có thể dựa vào ứng dụng của bạn có quyền truy cập vào hệ thống tập tin địa phương, và bạn có thể mã hóa cứng một tên tập tin cấu hình .. nhưng nếu tất cả cấu hình của bạn nằm trong cơ sở dữ liệu, bạn định cấu hình cơ sở dữ liệu để nói chuyện với đâu?

  • Dễ tinh chỉnh và triển khai: chỉnh sửa tệp cấu hình trên máy chủ bằng tay có thể nhanh hơn thay đổi cơ sở dữ liệu ... nhưng nếu bạn có nhiều máy chủ, bạn có muốn chỉnh sửa tệp không mỗi người trong số họ?

  • Tính đơn giản của việc đọc/xử lý mã cấu hình: cấu hình của bạn sẽ trông như thế nào? Nó có phân cấp tự nhiên không? Nếu đúng như vậy, XML có thể phù hợp. Nếu nó giống như một tập hợp các cặp tên/giá trị thì một bảng đơn giản là phù hợp. Tất nhiên, bạn có thể lưu trữ XML trong cơ sở dữ liệu - bạn không để buộc lưu trữ vị trí và lưu trữ định dạng quyết định cùng nhau. Việc chỉnh sửa tài liệu XML trên cơ sở dữ liệu có thể khó hơn việc chỉnh sửa một tệp XML hoặc thay đổi các giá trị riêng lẻ ... nhưng bạn luôn có thể làm cho cuộc sống dễ dàng hơn với các công cụ cho loại điều này.

+0

Cảm ơn bạn. Tôi đã có kế hoạch đi với một cách tiếp cận lai đưa dữ liệu vào các tập tin địa phương và một số vào cơ sở dữ liệu. Tôi nghĩ rằng tôi sẽ đi với một hoàn toàn với lưu trữ cơ sở dữ liệu dựa trên các câu trả lời. Ứng dụng tôi đang xây dựng sẽ có một trình cài đặt được mã hóa để nó sẽ xử lý các thiết lập cơ sở dữ liệu và các thiết lập web.config ban đầu. – Adrian

0

nếu điểm quan trọng nhất của bạn là tốc độ, sau đó sử dụng cơ sở dữ liệu. xml rất chậm.

nhưng, nếu dữ liệu của bạn là rất "phức tạp" hoặc có nhiều mối quan hệ và các thuộc tính khác nhau, xem xét sử dụng xml

+3

Điều gì sẽ xảy ra nếu cơ sở dữ liệu được truy cập qua internet? Và tệp XML chỉ dài 10 dòng và địa phương? Bạn không thể giả định rằng XML chậm hơn một cơ sở dữ liệu, vấn đề không được xác định đủ rõ ràng –

3

Chỉ cần cho cài đặt máy chủ - thực sự không quan trọng. Bạn sẽ chỉ đọc chúng một lần. Ngay cả khi phải mất một vài giây, vẫn sẽ không đáng kể.

Đo lường đầu tiên, sau đó tối ưu hóa.

2

Bao lâu là một đoạn chuỗi? Tôi có thể viết một truy vấn cơ sở dữ liệu chậm hơn nhiều so với việc đọc cùng một dữ liệu từ một tệp XML, nhưng tôi cũng có thể viết một tệp XML chậm hơn nhiều so với việc đọc một cơ sở dữ liệu.

Tôi sẽ nói nếu bạn đang hiển thị nội dung tĩnh "chủ yếu" và bạn lo lắng về hiệu suất, thì có thể nên thực hiện nó theo bất kỳ cách nào bạn nghĩ đơn giản nhất, sau đó sử dụng cơ chế lưu vào bộ nhớ đệm làm cho nó hoạt động - theo cách này, truy cập đầu tiên có thể là "chậm" nhưng các lần truy cập tiếp theo sẽ nhanh hơn rất nhiều.

Thông thường, nếu bạn đang tạo nội dung HTML, hãy viết HTML đã hoàn thành vào đĩa và gửi cho trình duyệt, thay vì điền từ tệp cơ sở dữ liệu/XML vào các yêu cầu tiếp theo. Nếu bạn có quá trình phụ trợ của bạn xóa các tập tin lưu trữ bất cứ khi nào nó cập nhật nội dung, thì máy chủ có thể tự động phát hiện khi tệp không tồn tại và tạo lại nó.

1

Điều này phụ thuộc vào chiến lược bạn sẽ sử dụng để truy cập dữ liệu.

Nếu bạn đi tuyến đường cơ sở dữ liệu, bạn sẽ lưu vào bộ nhớ cache kết quả của mình? Có thể có rất nhiều cuộc trò chuyện mạng nếu bạn liên tục kéo ra các chi tiết từ db.

Về mặt đơn giản, bạn thực sự có thể bất khả tri với nguồn dữ liệu bằng cách sử dụng LINQ ..

Nhanh hơn? Khi nội dung trong bộ nhớ không có sự khác biệt. Thông tin cấu hình, như một áp phích khác được chỉ ra thường khá tĩnh. Tại sao không tạo ra một ứng dụng giao diện điều khiển và định lượng sự khác biệt, bằng cách sử dụng một profiler.

http://www.red-gate.com/products/ants_performance_profiler/index.htm?utm_source=google&utm_medium=cpc&utm_content=brand_aware&utm_campaign=antsperformanceprofiler&gclid=CLXmzbLXnKMCFQs-lAodSXTGsQ

0

Tôi chỉ sử dụng cơ sở dữ liệu theo mặc định tại đây. Nhanh hơn và yêu cầu ít mã hơn.

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