Tôi nên lưu trữ dữ liệu hoặc nhấn cơ sở dữ liệu?


10

Tôi đã không làm việc với bất kỳ cơ chế lưu trữ và đã tự hỏi những lựa chọn của tôi trong thế giới .net cho kịch bản sau đây.

Về cơ bản chúng tôi có Dịch vụ REST trong đó người dùng chuyển ID của Danh mục (thư mục nghĩ) và danh mục này có thể có nhiều danh mục phụ và mỗi danh mục phụ có thể có 1000 thùng chứa phương tiện (nghĩ đối tượng tham chiếu tệp) chứa thông tin về một tệp có thể trên máy chủ NAS hoặc SAN (tệp là video trong trường hợp này). Mối quan hệ giữa các danh mục này được lưu trữ trong cơ sở dữ liệu cùng với một số quy tắc cấp phép và dữ liệu meta về các danh mục phụ.

Vì vậy, từ góc độ UI, chúng ta có một điều khiển cây được tải lười biếng, được điều khiển bởi người dùng bằng cách nhấp vào từng thư mục con (nghĩ về Windows explorer). Khi họ đến một URL của tệp video, sau đó họ có thể xem video.

Số lượng người dùng có thể tăng lên 1000 và các danh mục phụ và video có thể trong 10000 khi hệ thống phát triển.

Câu hỏi đặt ra là chúng ta có nên thực hiện theo cách nó đang hoạt động khi mỗi yêu cầu truy cập cơ sở dữ liệu hay chúng ta nên nghĩ về việc lưu trữ dữ liệu?

Chúng tôi đang sử dụng IIS 6/7 và Asp.net.


4
Bạn đã định hình hệ thống của bạn dưới một tải thực tế? Có thể các dữ liệu được lưu trữ? Nó sẽ có ý nghĩa?

Câu trả lời:


13

Đầu tiên, đảm bảo rằng mã được phân vùng theo cách mà nhà cung cấp dữ liệu của bạn có thể được chuyển đổi dễ dàng. Chúng ta đang nói về sự phân biệt giao diện và các nguyên tắc RẮN khác ở đây.

Tiếp theo bạn cần biết câu trả lời như sau:

1) Dữ liệu sẽ thay đổi thường xuyên? 2) Ứng dụng có thăm dò dịch vụ REST của bạn thường xuyên để nhận các bản cập nhật này không? 3) Cơ sở dữ liệu được sử dụng cho mục đích khác? 4) Bạn có biết về bất kỳ vấn đề hiệu suất hiện tại? 5) Dữ liệu có được cập nhật bởi ứng dụng của bạn không và những cập nhật đó có cần phản ánh trong ứng dụng không?

Điều thú vị là bằng cách sử dụng cơ sở dữ liệu, về mặt kỹ thuật, bạn đã lưu trữ dữ liệu. Đó là những gì một cơ sở dữ liệu làm. Rất nhiều R & D đi vào làm cho cơ sở dữ liệu nhanh nhất có thể trong việc truy xuất dữ liệu. Nó sử dụng bộ nhớ cache riêng cho dữ liệu được sử dụng thường xuyên chẳng hạn.

Vì vậy, hãy tự hỏi những gì bạn hy vọng đạt được bằng cách hoán đổi các nhà cung cấp bộ nhớ cache? Và những hạn chế hiện tại cần giải quyết là gì?

Nếu bạn hiện không gặp phải bất kỳ sự chậm lại nào, tôi chỉ cần nói "không, không cần phải chuyển đổi".

Đó là một chủ đề thực sự lớn. Bộ nhớ cache có xu hướng làm rất tốt khi dữ liệu cần được phân phối theo địa lý, nhưng có một chi phí rất lớn về mặt quản lý.

Tôi đang thực hiện một dự án tại thời điểm mà tôi đưa ra chính xác các loại quyết định tương tự.

Giải pháp của tôi cho đến nay là chỉ sử dụng cơ sở dữ liệu và đạt được nhiều yêu cầu bỏ phiếu từ mỗi khách hàng. Nghe có vẻ xui xẻo, nhưng nó mở rộng (trong thử nghiệm) nhiều hơn tôi cần, mã rất đơn giản.

Điều đó nói rằng, mã của tôi sử dụng một kiểu mẫu kho lưu trữ trừu tượng hóa nhà cung cấp dữ liệu của ứng dụng chính từ mã cơ sở dữ liệu. Nếu tôi muốn trao đổi trong một nhà cung cấp bộ đệm như GemFire, nó sẽ yêu cầu một số lượng mã khá nhỏ để làm.


Cảm ơn Ian. Ở giai đoạn này, chúng tôi có một cơ sở dữ liệu nhưng nó là một câu hỏi mang tính giáo dục về những điều cần chú ý.
JD01

18

Thực sự không có đủ thông tin, theo nhận xét của Thorbjørn.

Bộ nhớ đệm, khi thực hiện sai, có thể khiến bạn và người dùng của bạn rất đau buồn. Hãy chắc chắn rằng bạn cần phải lo lắng về bộ nhớ đệm trước khi làm phức tạp ứng dụng của bạn.

Vì vậy, trong trường hợp không có thông tin cho thấy bạn thực sự cần lưu vào bộ đệm, đừng lưu bộ đệm.

[Quy tắc tối ưu chung: Nếu bạn cần hỏi tôi có nên làm gì không, câu trả lời là không] *
* Đó sẽ là một câu, không phải là một câu hỏi, ở hầu hết các nơi mà câu trả lời là có.


Yêu quy tắc chung, cũng nói :)
Ian

@ dan-mcgrath Có phải là một ý tưởng tốt để lưu trữ các mục nhập nếu tôi sẽ truy cập mỗi mục chính xác 2 lần chỉ trong một khoảng thời gian 5 phút và không bao giờ sau đó?
nishantbhardwaj2002
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.