10

Ho letto la documentazione e sono riuscito a trovare qualsiasi cosa per aiutarmi finora. Ho letto anche un gran numero di articoli sul blog, ma nulla sembra rispondere direttamente alla mia domanda:Ruby on Rails/ActiveRecord e Table Partitions

È possibile gestire le partizioni di tabella in una tabella InnoDB con ActiveRecord? Preferisco davvero mantenere le cose molto pulite e sto cercando di evitare di scrivere script esterni per cercare di automatizzare la creazione/eliminazione delle partizioni nel tempo.

+0

Quale gestione delle partizioni vuoi? –

+0

@RickJames Bene, iniziamo con qualsiasi tipo. Al momento eseguo partizioni su intervalli di date di due giorni. Non sono a conoscenza di alcun tipo di gestione integrata per le partizioni con Rails, né ho mai incontrato gemme che pretendano di farlo in qualsiasi modo intelligente. –

+0

Qual è il tuo obiettivo finale con il partizionamento manuale? Forse stai cercando di scuoiare il gatto nel modo sbagliato, e c'è un processo meno manuale (ad esempio, aggiungendo indici appropriati)? ActiveRecord è un'astrazione e l'aggiunta di supporto per qualcosa che MySQL già tenta di astrarre (AFAIK) sembrerebbe essere piuttosto dispersiva. – hoffmanc

risposta

0

Una soluzione supplementare ha è emerso da quando ho fatto questa domanda per la prima volta. Mentre la soluzione richiede l'uso di Postgresql su MySQL o Maria, questo non è un ostacolo elevato poiché è più o meno il database di default per Rails.

La gemma Partitioned su Github gestisce in modo specifico tutte le meccaniche di partizionamento in un modo piacevole e railsy.

0

Non riesco a vedere come ActiveRecord possa fare cose come DROP PARTITION e REORGANIZE PARTITION. Può anche chiamare una procedura memorizzata? Se è così, quindi costruisci uno simile a ciò che è in my blog e chiamalo da Rails.

+0

Tuttavia le migrazioni lo supportano assolutamente. –

0

Sì, è possibile! Ma non penso che ci sia un gioiello che lo farà per te.

Al fine di eseguire la gestione delle partizioni è necessario fare il duro lavoro da soli e inviare il comando che è necessario eseguire il DB direttamente tramite la connessione nel modo seguente

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

Mm .. Quello che dice è, "Non c'è niente di integrato per supportarlo, quindi fai da te l'SQL raw .." Non è esattamente quello che sto cercando. Se devo fare da solo l'SQL, non mi preoccuperei di tutto il sovraccarico di caricamento del framework Rails prima ... Continuerò a usare gli script che ho. –

+0

ci sono diversi strumenti per gestire le partizioni per postreSQL, potrebbe essere che dovresti provarlo al posto di MySQL o scrivere questa gemma da solo e fare bene a tutti i programmatori di rotaie sulla terra. – Tata

+0

Uso estesamente le partizioni in mysql e non ho mai incontrato nulla di diverso dall'utilizzo di SQL raw in activerecord per definirle e gestirle. – TJChambers