10

Przeczytałem dokumentację i udało mi się znaleźć cokolwiek, aby mi pomóc. Przeczytałem również wiele artykułów na blogu, ale nic nie wydaje mi się bezpośrednio odpowiadać na moje pytanie:Ruby on Rails/ActiveRecord and Table Partition

Czy możliwe jest zarządzanie partycjami tabel w tabeli InnoDB za pomocą ActiveRecord? Naprawdę wolałbym zachować wszystko w czystości i staram się unikać pisania zewnętrznych skryptów, aby zautomatyzować tworzenie/usuwanie partycji w czasie.

+0

Jakie zarządzanie partycjami chcesz? –

+0

@RickJames Cóż, zacznijmy od jakiegokolwiek rodzaju. Obecnie używam partycji w zakresie dat obejmującym dwa dni. Nie jestem świadomy wszelkiego rodzaju wbudowanego zarządzania partycjami z Railsami, ani nie natknąłem się na żadne klejnoty, które mają na celu zrobienie tego w jakikolwiek inteligentny sposób. –

+0

Jaki jest Twój ostateczny cel dzięki ręcznemu partycjonowaniu? Być może próbujesz skorygować kota w niewłaściwy sposób i istnieje mniej ręczny proces (np. Dodawanie odpowiednich indeksów)? ActiveRecord jest abstrakcją i dodanie wsparcia dla czegoś, co MySQL już próbuje usunąć (AFAIK) wydaje się być naprawdę nieszczelne. – hoffmanc

Odpowiedz

0

Dodatkowym rozwiązaniem jest pojawiły się, odkąd pierwszy raz zadałem to pytanie. Podczas gdy rozwiązanie wymaga użycia PostgreSQL nad MySQL lub Maria, nie jest to duża przeszkoda, ponieważ jest to mniej lub więcej niż domyślna baza danych dla Rails.

Klejnot na Github w szczególności Partitioned obsługuje wszystkie mechanizmy partycjonowania w przyjemny, Railsowy sposób.

0

Nie widzę, w jaki sposób ActiveRecord może robić takie rzeczy, jak DROP PARTITION i REORGANIZE PARTITION. Czy może nawet wywołać procedurę przechowywaną? Jeśli tak, zbuduj jeden podobny do tego, który jest w my blog i wywołaj go z Rails.

+0

Jednak migracje absolutnie go wspierają. –

0

Tak, możesz! Ale nie sądzę, że istnieje klejnot, który zrobi to za Ciebie.

W celu przeprowadzenia zarządzania partycji trzeba wykonać ciężką pracę przez siebie i wysłać polecenie, które trzeba wykonać na DB bezpośrednio przez połączenie w następujący sposób

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

Mm .. To, co mówi, brzmi: "Nie ma nic wbudowanego do obsługi, więc rób sobie surowe SQL ..." Nie dokładnie to, czego szukam. Jeśli będę musiał sam wykonać SQL, nie zawracałbym sobie głowy wszystkimi obciążeniami związanymi z ładowaniem frameworka Rails. Po prostu ciągle używam skryptów, które posiadam. –

+0

Istnieje kilka narzędzi do zarządzania partycjami dla postreSQL, może powinieneś wypróbować to zamiast MySQL lub napisać ten klejnot i zrobić dobrze dla wszystkich programistów rails na ziemi. – Tata

+0

Używam partycji w mysql szeroko i nigdy nie natknąłem się na nic innego niż używanie surowego SQL w activerecord do definiowania i zarządzania nimi. – TJChambers