Cách hiện đại để phân vùng PostgreSQL trên các máy là gì, khi dữ liệu được phân vùng tự nhiên


22

Sau vài năm sống trong không gian "NoQuery", bây giờ tôi có một vấn đề khá "quan hệ" về bản chất. Hôm nay tôi thấy các cửa hàng dữ liệu với đôi mắt khá khác so với trước đây. Những điều như Riak đã làm hỏng tôi theo cách mà tôi không thể chịu đựng được những điểm thất bại duy nhất, "xuống bảo trì", v.v ... Tất nhiên, (hoặc tôi hy vọng), tôi không hoàn toàn mất đi sự tỉnh táo của mình. Đây là một dự án cá nhân không hoàn toàn (hoặc chưa) có yêu cầu rất cao.

Hầu hết các giải pháp bảo vệ không cung cấp cho tôi những gì tôi muốn (ít nhất là trong nháy mắt), có lẽ vì vấn đề của tôi khá "dễ" để giải quyết. Ít nhất là ở cấp độ khái niệm (bỏ qua các hạn chế mà chính RDBM mang đến cho bảng).

  1. Tôi có một lượng nhỏ dữ liệu "chia sẻ", có thể được sao chép tự do. Nó không có yêu cầu về tính nhất quán cứng. Điều này có thể được lưu trữ trong một cơ sở dữ liệu giống như máy phát điện và sẽ mở rộng vô hạn. Nhưng tôi vẫn muốn đi với một cơ sở dữ liệu duy nhất nếu có thể.

  2. Tôi có rất nhiều dữ liệu "theo người dùng". Đó là - rất nhiều người dùng, với mỗi người dùng có dữ liệu có kích thước hoàn toàn hợp lý, thực sự phù hợp để được lưu trữ trên một nút PostgreQuery duy nhất. Chúng tôi đang nói về tối đa 10 ngàn hồ sơ.

  3. Tôi không bao giờ cần truy vấn người dùng chéo và tôi không cần nguyên tử người dùng chéo.

Điều này nghe có vẻ cực kỳ dễ dàng để đạt được. Ít nhất là khi tôi đang nhìn nó với "đôi mắt NoQuery" của mình.

Dưới đây là những ý tưởng khởi đầu ngây thơ của tôi:

  1. Ở cực kỳ, tôi chỉ có thể tuần tự hóa toàn bộ người dùng dưới dạng một Khóa / Giá trị duy nhất trong Rịa. Tất nhiên, việc hủy / tuần tự hóa liên tục một vài megabyte dữ liệu sẽ chậm và đó là lý do tại sao tôi đang cân nhắc sử dụng PostgreQuery. Rất nhiều Rịak K / Vs là không có, vì tôi cần tính nguyên tử / giao dịch trong dữ liệu của mỗi người dùng.

  2. Tôi có thể sử dụng cơ sở dữ liệu SQLite cho mỗi người dùng và sử dụng một cái gì đó như GlusterFS để dự phòng / sẵn có. Đây có lẽ là giải pháp tôi sẽ chọn nếu tôi không thể tìm thấy thứ gì đó tốt như nhau khi sử dụng PostgreSQL. Ưu điểm: Có thể giảm / tăng quy mô thực sự tốt; Nhược điểm: Tôi muốn có các loại và mức độ nghiêm ngặt của PostgreSQL đối với SQLite

Vì vậy, những gì tôi lý tưởng sẽ yêu cầu từ một giải pháp ngăn chặn PostgreSQL:

  1. Tự động giữ một vài bản sao của mọi dữ liệu của người dùng (trên các máy khác nhau). Có thể tự động chuyển đổi nút chủ trên mỗi người dùng / phân đoạn (nếu chủ trước đó bị hỏng).
  2. Có thể tự động tăng / giảm tỷ lệ, bằng cách thêm / xóa các nút máy chủ. Chủ yếu là giống như Rịa có thể làm.
  3. Không yêu cầu ứng dụng của tôi biết nút nào để nói chuyện và khi nào.

Hi loxs, cuối cùng bạn đã giải quyết vấn đề này như thế nào?
Dikla

Phân vùng cấp ứng dụng với nhiều cửa hàng dữ liệu. Thực sự là một mớ hỗn độn :(. Thật đáng buồn khi một thứ như thế này không tồn tại ...
loxs

Câu trả lời:



4

Tôi nghĩ rằng, lựa chọn tốt nhất là pgpool-II . Bạn có thể có tới 128 nút và

  1. Có thể thiết lập quy tắc phân vùng và phân phối dữ liệu phức tạp
  2. Hỗ trợ "Cung cấp trực tuyến". Không mở rộng quy mô ghi nhưng nó có thể mở rộng
  3. Không chắc chắn, nếu có thể ra khỏi hộp. Có lẽ bạn cần sử dụng LVS

Một lựa chọn khác có thể là Stado

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.