10

Tôi đã đọc tài liệu và có thể tìm thấy bất kỳ thứ gì để hỗ trợ tôi cho đến thời điểm này. Tôi cũng đã đọc một số lượng lớn các bài viết trên blog, nhưng dường như không có câu trả lời trực tiếp cho câu hỏi của tôi:Ruby on Rails/ActiveRecord và Bảng phân vùng

Có thể quản lý các phân vùng bảng trong bảng InnoDB từ ActiveRecord không? Tôi thực sự muốn giữ mọi thứ rất sạch sẽ và tôi đang cố gắng tránh viết kịch bản bên ngoài để cố gắng tự động hóa việc tạo/xóa phân vùng theo thời gian.

+0

Bạn muốn quản lý phân vùng nào? –

+0

@RickJames Vâng, chúng ta hãy bắt đầu với bất kỳ loại nào cả. Tôi hiện đang chạy phân vùng trên các phạm vi ngày có hai ngày rộng. Tôi không biết về bất kỳ loại quản lý được xây dựng cho phân vùng với Rails ở tất cả, cũng không có tôi đi qua bất kỳ đá quý mà purport để làm điều đó trong bất kỳ loại cách thông minh. –

+0

Mục tiêu cuối cùng của bạn với phân vùng thủ công là gì? Có lẽ bạn đang cố gắng để da con mèo một cách sai lầm, và có một quy trình thủ công ít hơn (ví dụ, thêm các chỉ mục thích hợp)? ActiveRecord là một trừu tượng, và thêm hỗ trợ cho một cái gì đó mà MySQL đã cố gắng để trừu tượng đi (AFAIK) có vẻ là khá leaky thực sự. – hoffmanc

Trả lời

0

Một giải pháp khác có nổi lên kể từ lần đầu tiên tôi hỏi câu hỏi này. Trong khi các giải pháp không yêu cầu sử dụng Postgresql trên MySQL hoặc Maria, đây không phải là một trở ngại lớn vì nó là nhiều hơn hoặc ít hơn sau đó cơ sở dữ liệu mặc định cho Rails.

Đá quý Partitioned trên Github xử lý cụ thể tất cả các cơ chế phân vùng theo cách đẹp, Railsy.

0

Tôi không thể xem ActiveRecord có thể làm những việc như DROP PARTITIONREORGANIZE PARTITION như thế nào. Thậm chí nó có thể gọi thủ tục được lưu trữ không? Nếu vậy, sau đó xây dựng một trong những tương tự như những gì là trong my blog và gọi nó từ Rails.

+0

Tuy nhiên, di chuyển hoàn toàn hỗ trợ nó. –

0

Có, bạn có thể! Nhưng tôi không nghĩ rằng có một viên ngọc sẽ làm điều đó cho bạn.

Để thực hiện quản lý phân vùng mà bạn cần phải làm những công việc khó khăn bởi bản thân và gửi lệnh mà bạn cần phải chạy trên DB trực tiếp thông qua kết nối theo cách sau

ActiveRecord::Base.connection.execute("ALTER TABLE your_table drop partition p0") 
+0

Mm .. Điều này nói là, "Không có gì được xây dựng trong để hỗ trợ nó, do đó, làm cho SQL nguyên bản thân mình .." Không chính xác những gì tôi đang tìm kiếm. Nếu tôi phải tự mình thực hiện SQL, tôi sẽ không bận tâm với tất cả chi phí tải khung Rails đầu tiên .. Tôi chỉ tiếp tục sử dụng các tập lệnh mà tôi có. –

+0

có một số công cụ để quản lý phân vùng cho postreSQL, có thể bạn nên thử thay vì MySQL hoặc tự viết gem này và làm tốt cho tất cả các lập trình đường ray trên trái đất. – Tata

+0

Tôi sử dụng phân vùng trong mysql rộng rãi và chưa bao giờ gặp bất kỳ điều gì khác ngoài việc sử dụng SQL thô trong activerecord để xác định và quản lý chúng. – TJChambers