8

fBetter pratica per la enorme dimensione della tabella su Ruby on Rails 4/ActiveRecordmigliore pratica per la enorme dimensione della tabella su Ruby on Rails 4/ActiveRecord

Come potrei partizionare un big table nel postgreSQL con Active Record on Rails 4

Preferisco PostgreSQL o altri RDBMS, perché l'ho provato in MongoDB. E 'davvero lento su di esso.

È Rails 4 che supporta una buona soluzione per un unico grande tavolo?

(il mio caso: più di 50 billions di record, la dimensione è di circa 20TB)

Descrizione dei dati

dotato di tavolo User contenente name, personal_data, year campi.

I dati possono essere divisi per year ei dati verranno suddivisi equamente.

Idee

penso che sia not practical per creare il modello più simile User_1950, User_2001,..., User_2015

voglio partition intero dati year

Ci sono due avvicinò mi viene in mente

  • diviso in diversi physical table nello stesso database. (sharding?)
  • suddiviso in diversi physical database sui diversi database. (Potrebbe funziona bene con Rails)

voglio la soluzione può compatibile con Active Record

si comporterà come

User.find(name: xxx, year: 1988) User.find(name: xxx, year: 2012)

In modo che non mi importa di come per accedere alle tabelle multiple partizionate.

Per quanto ne so

ho trovato un gioiello partitioned ma che non sta sostenendo Rails 4

+2

Usa [eredità] (http://www.postgresql.org/docs/current/static/tutorial-inheritance.html) per partizionare le tabelle: http : //www.depesz.com/2015/06/07/partitioning-what-why-how/ –

+0

@a_horse_with_no_name Ciao, ma potrebbe anche supportare il record attivo sui binari 4. non sembra fortunato su di esso? – newBike

+0

Sembra che la gemma 'partizionata' che stavi cercando possa supportare Rails 4 ora https://github.com/fiksu/partitioned/issues/44 –

risposta

3

Dal momento che si archiviano i dati da anni, forse è possibile utilizzare i dati sharded basati su anni. Vorrei suggerire octopus per l'uso con activerecord.

Le query diventerà qualcosa di simile:

User.using(:year_2012).find(name: xxx) 
+0

questa gemma metterà i dati per anno in una tabella fisica diversa su postgreSQL? – newBike

+0

Dovrai creare tu stesso dei cocci. Ma sì, si comporterà come un'istanza di database separata – usmanali

+0

Grazie, ne prenderò in considerazione. – newBike