7

Các phương pháp hay nhất để thiết kế cơ sở dữ liệu và chuẩn hóa cho các trang web lưu lượng truy cập cao như stackoverflow là gì?Chuẩn hóa hoặc Không chuẩn hóa trong các trang web có lưu lượng truy cập cao

Có nên sử dụng cơ sở dữ liệu chuẩn hóa để lưu giữ hồ sơ hoặc kỹ thuật chuẩn hóa hoặc kết hợp cả hai?

Có hợp lý để thiết kế cơ sở dữ liệu chuẩn hóa làm cơ sở dữ liệu chính để lưu trữ dự phòng nhằm giảm dự phòng và đồng thời duy trì một dạng không chuẩn hóa khác của cơ sở dữ liệu để tìm kiếm nhanh không?

hoặc

Cơ sở dữ liệu chính có được chuẩn hóa không nhưng với chế độ xem chuẩn ở cấp ứng dụng cho hoạt động cơ sở dữ liệu nhanh?

hoặc một số cách tiếp cận khác?

Trả lời

5

Làm chuẩn hóa db để giảm số lần kết nối cần thiết cho các truy vấn dữ dội là một trong nhiều cách khác nhau về chia tỷ lệ. Việc phải tham gia ít hơn có nghĩa là việc nâng cấp ít hơn bởi db và đĩa là rẻ.

Điều đó nói rằng, đối với số lượng vô lý về lưu lượng truy cập db quan hệ tốt có thể khó đạt được. Đó là lý do tại sao nhiều trang web lớn hơn sử dụng các cửa hàng giá trị quan trọng (ví dụ: memcached) và các cơ chế lưu vào bộ nhớ cache khác.

The Art of Capacity Planning là khá tốt.

+4

đĩa SPACE là rẻ, nhưng hiệu suất đĩa chắc chắn nhất không phải là. Với thiết kế không chuẩn hóa, bạn thường kết thúc chèn hoặc cập nhật một khối lượng lớn dữ liệu trên các bảng rộng hơn và thường gây ra các vấn đề về hiệu năng. –

+1

Đúng, có các giao dịch với mọi quyết định. Trình diễn thực sự phụ thuộc vào cấu trúc dữ liệu của bạn là gì. – BaroqueBobcat

1

Thứ nhất: Xác định cho mình những gì Hight-phương tiện giao thông:

  • 50,000 Page-Viewss mỗi ngày?
  • 500.000 Lượt xem trang mỗi ngày?
  • 5.000.000 Lượt xem trang mỗi ngày?
  • nhiều hơn?

Tính toán giá trị này xuống số lần xem trang cao nhất trên mỗi phút và mỗi giây. Sau đó suy nghĩ về dữ liệu bạn muốn truy vấn trên mỗi lần xem trang. Dữ liệu có thể lưu vào bộ nhớ cache được không? Dữ liệu động như thế nào, dữ liệu lớn đến mức nào?

Phân tích các yêu cầu riêng lẻ của bạn, lập trình một số mã, thực hiện một số thử nghiệm tải, tối ưu hóa. Trong hầu hết các trường hợp, trước khi bạn cần phải mở rộng các máy chủ cơ sở dữ liệu, bạn cần phải mở rộng các máy chủ web.

Cơ sở dữ liệu quan hệ có thể được, nếu được tối ưu hóa hoàn toàn, nhanh chóng đáng kinh ngạc khi tham gia các bảng!

Một cơ sở dữ liệu quan hệ có thể được nhấn hiếm khi khi đến như một back-end, để cư một bộ nhớ cache hoặc điền vào một số bảng dữ liệu không chuẩn hóa. Tôi sẽ không làm cho sự phân quyền theo cách tiếp cận mặc định.

(Bạn đề cập tìm kiếm, nhìn vào ví dụ Lucene hoặc một cái gì đó tương tự, nếu bạn cần tìm kiếm toàn văn.)

tốt nhất câu trả lời thực hành tốt nhất chắc chắn là: Nó phụ thuộc ;-)

0

Đối với một dự án tôi đang làm việc, chúng tôi đã đi theo lộ trình bảng không chuẩn hóa như chúng tôi mong đợi các bảng chính của chúng tôi có tỷ lệ ghi cao để đọc (thay vì tất cả người dùng nhấn cùng một bảng, chúng tôi đã chuẩn hóa chúng và đặt từng "bộ người dùng" để sử dụng phân đoạn cụ thể).Bạn có thể tìm đọc http://highscalability.com/ để biết ví dụ về cách "các trang web lớn" đối phó với khối lượng - Stack Overflow gần đây đã được giới thiệu.

10

Việc đạt được hiệu suất tham gia thường được đánh giá quá cao. Các sản phẩm cơ sở dữ liệu như Oracle được xây dựng để tham gia rất hiệu quả. Tham gia thường được coi là thực hiện tồi tệ khi thủ phạm thực sự là một mô hình dữ liệu nghèo hoặc một chiến lược lập chỉ mục nghèo nàn. Mọi người cũng quên rằng cơ sở dữ liệu không chuẩn hóa thực hiện rất nặng khi nói đến việc chèn hoặc cập nhật dữ liệu.

Điều quan trọng cần ghi nhớ là loại ứng dụng bạn đang xây dựng. Hầu hết các trang web nổi tiếng không giống như các ứng dụng doanh nghiệp thông thường. Đó là lý do tại sao Google, Facebook, v.v. không sử dụng cơ sở dữ liệu quan hệ. Gần đây, có rất nhiều thảo luận về chủ đề này, trong đó I have blogged about. Vì vậy, nếu bạn đang xây dựng một trang web chủ yếu về việc cung cấp các tải trọng của nội dung có cấu trúc nửa có thể bạn không muốn sử dụng một cơ sở dữ liệu quan hệ, không được chuẩn hóa hoặc ngược lại. Nhưng nếu bạn đang xây dựng một trang web giao dịch cao (chẳng hạn như một ngân hàng trực tuyến), bạn cần một thiết kế đảm bảo an ninh và tính toàn vẹn dữ liệu và thực hiện tốt như vậy. Điều đó có nghĩa là một cơ sở dữ liệu quan hệ trong ít nhất là hình thức bình thường thứ ba.

0

Không có vấn đề gì nếu bạn không lưu vào bộ nhớ cache đúng cách.

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