Điểm:-1

Về cách các công ty lớn thiết lập cơ sở dữ liệu của họ

lá cờ in

Tôi đang cố gắng hiểu cách các công ty xử lý yêu cầu cơ sở dữ liệu lớn thiết lập cơ sở hạ tầng của họ. Gần đây tôi đã tạo một vài ứng dụng python lưu trữ dữ liệu trong PostGres và yêu cầu đọc/ghi mất thời gian; vì chúng không được lưu trữ trên RAM và chúng là nút cổ chai lớn đối với tốc độ. Điều này vẫn hoạt động nếu số lượng người dùng nhỏ hơn 10 và thậm chí với 100 người xếp hàng, nó có thể hoạt động nhưng với hàng nghìn yêu cầu, dữ liệu được lưu trữ như thế nào, vì nó sẽ chậm lại trong quá trình đọc và ghi.

Trong một dự án trang web gần đây mà tôi đang thực hiện, tôi đã có ý tưởng đọc toàn bộ cơ sở dữ liệu và lưu trữ nó trong gấu trúc và định kỳ ghi các mục đã thay đổi của nó vào cơ sở dữ liệu. Cách tiếp cận này có vẻ nguy hiểm trong các tình huống nếu hệ điều hành gặp sự cố và phải khởi động lại, điều này sẽ gây mất dữ liệu.

Đây có phải là cách tiếp cận của các công ty lớn? Họ đọc toàn bộ cơ sở dữ liệu vào RAM ở đâu? Nếu không, bạn có thể vui lòng tư vấn những cách có thể tôi có thể xử lý dữ liệu lớn để nói một trang web blog, nơi có thể giảm thời gian đọc/ghi.

Ngay cả khi bạn có thể chỉ cho tôi những trang mà tôi có thể tự tìm hiểu thêm về nó, thì cũng đủ rồi. Cảm ơn

lá cờ us
Rob
*"Tôi có ý tưởng đọc toàn bộ cơ sở dữ liệu"* - ​​Điều đó hiệu quả như việc đặt mua tất cả sách từ Amazon, đợi chúng được giao và sau đó, sau khi các ngăn sách của bạn đã được sắp xếp theo màu bìa, hãy loại bỏ tất cả các cuốn sách không phải về thiết kế cơ sở dữ liệu dành cho người mới bắt đầu và thiết kế các ứng dụng sử dụng nhiều dữ liệu. - Lược đồ cơ sở dữ liệu và thiết kế truy vấn quan trọng hơn nhiều đối với hiệu suất với các tập dữ liệu lớn, mặc dù việc điều chỉnh phía máy chủ và phần cứng đủ lớn thường sẽ (trong một thời gian) bù đắp khá tốt cho việc lập trình kém và tầm thường.
lá cờ us
Rob
Có khá nhiều kiến ​​trúc thực tế được thảo luận tại http://highscalability.com/start-here/ - không phải tất cả những kiến ​​trúc đó đều có thể áp dụng cho bạn và bạn sẽ không tìm thấy mã ở đó, nhưng các khái niệm, giải pháp và thiết kế thường khá giáo dục.
lá cờ us
100 người dùng gần như không có gì. Chúng tôi xử lý khoảng 200 triệu giao dịch (khá phức tạp) hàng ngày cho vài triệu người dùng. Nhưng mọi truy vấn đều được tối ưu hóa cho hiệu suất.
lá cờ br
"Đây có phải là cách tiếp cận của các công ty lớn? Nơi họ đọc toàn bộ cơ sở dữ liệu vào RAM?" - Có, đại loại là, nói chung nếu tập dữ liệu cần nằm hoàn toàn trong bộ nhớ thì có lẽ bạn nên cấu trúc lại DB để hoạt động trên hệ thống NoSQL.
Điểm:3
lá cờ al
fvu

Ngay cả các máy chủ tương đối nhỏ cũng có khả năng thực hiện hàng trăm truy vấn mỗi giây.

Vì vậy, tôi nghĩ rằng đầu tiên, lớn lao nút cổ chai là do điều chỉnh phiên bản Postgres của bạn không đúng cách. Có rất nhiều thông số có thể điều chỉnh, hãy chuyển sang PGtune để có được một giai điệu bắt đầu tốt.

Sau đó, hãy xem các truy vấn của bạn. Bạn có các chỉ mục bao gồm hầu hết các truy vấn không? Chạy truy vấn của bạn với giải thích (ví dụ: trong pgAdmin) và xem mức độ hiệu quả của chúng

Sau đó, hãy xem liệu truy vấn của bạn có trả về kích thước tập dữ liệu phù hợp hay không. Không cần trả lại toàn bộ bảng nếu bạn chỉ muốn 1 bản ghi. Trong trường hợp đó, hãy tối ưu hóa các truy vấn của bạn.

Bạn thấy đấy, có một nhiều bạn có thể làm trước khi phải chuyển sang các kỹ thuật kỳ lạ hơn, phức tạp hơn và thường dễ gãy hơn.

Về nhận xét của bạn: cụ thể cho postgres wiki có một số thông tin thú vị. Dù sao đi nữa, việc đọc hướng dẫn tốt cũng rất quan trọng. Các công cụ cơ sở dữ liệu là những phần kỹ thuật tốt và bạn nên hiểu một chút về những gì đang diễn ra bên trong để thực sự quản lý chúng tốt. Và cũng có một số tin xấu: việc điều chỉnh cơ sở dữ liệu của bạn phụ thuộc nhiều vào kích thước của cơ sở dữ liệu, cách thức và mức độ hiệu quả của cơ sở dữ liệu được truy cập, trong các tình huống thực tế, bạn sẽ liên tục theo dõi cách thức hoạt động của cơ sở dữ liệu và những hành động nào có thể cải thiện tình hình . Chúng tôi sử dụng pgBadger cho nhiều nhiệm vụ phân tích.

Slartibartfast avatar
lá cờ in
Bạn có thể vui lòng giới thiệu cho tôi một số tài nguyên trực tuyến nơi tôi có thể tìm hiểu thêm về việc tối ưu hóa cơ sở dữ liệu không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.