2016-04-04 42 views
0

Yalnızca veritabanını ekleyerek Soft, Ruby on Rails ve sadece bir veritabanı (Google BigQuery) kullanarak, yumuşak silme işlemleri için en iyi uygulama hangisidir? Benim düşündüğüm model her güncelleme/silme için yeni bir satır eklemek ve sadece en yeni kaydı toplamak. Ama bunu Aktif Kayıt ile yapmak için temiz bir yol olduğundan emin değilim. Önerilen diğer modeller/en iyi uygulamalar?Sadece Ruby on Rails

+0

@MikhailBerlyant keşfetmek için tavsiye edersiniz
iyi bir yaklaşım olacaktır, Active kayıt üzerinde Ruby için bir sorgu arayüzü Raylar. – Gregology

cevap

1

Büyük Sorgu, büyük veri kümelerine karşı analiz amaçlıdır.
Eğer durum buysa - yeni güncelleme/silme satırları ekleyerek ve tarihi satırları "saklayarak" potansiyel olarak ortaya çıkacak olan yavaşlığı göz ardı edebilirsiniz.

BigQuery'ye yılında window function kullanarak aralıksız en son sürümünü almak için oldukça basittir. işte gidiyoruz - - "id" varsayarak

Örneğin

, zaman damgası

SELECT <fields list> FROM (
    SELECT <fields list>, ROW_NUMBER() OVER(PARTITION BY id ORDER BY ts DESC) AS num 
    FROM YourTable 
) 
WHERE num = 1 

Eğer tarihsel verileri kullanarak tarihsel analiz yapmak gerekirse kayıt/satır ve "ts" tanımlayan birincil anahtar olduğunu kolaydır o zamandaki satırın ilgili versiyonunu temsil edecek seçimi yapmak. Eğer tarihsel sürümleri gerekmiyorsa

periyodik temizlik yapabilirsiniz - bunun için (sizin durumda tarafından bölünebilen veya ay ya da her türlü lese dimantion daha iyi uyuyor) size gündüz bölümlenmiş verileri tutmak için daha iyidir
BigQuery var BigQuery'yi ile sopa istiyorsanız Table wildcard functions

- - bölümlenmiş tablolar sorgulamak için mükemmel destek bu ben o daha

1

Burada göz önünde bulundurulması gereken iki şey var. Düzeltme geçmişinizi ne kadar otantik ve performansınız ne kadar önemli?

Bunu yapmanın hızlı ve kirli yolu, kaydınızın bir JSON kopyasını bir geçmiş tablosuna kaydetmek. Bu işlemin yapılması kolaydır, ancak buradaki verilerin, çizelgenin gelecekteki sürümleriyle uyumlu şema olması garanti edilemez, yani kolayca geri yükleyemeyebilirsiniz.

Silinmiş veya geçmiş sürümleri olan birincil tablonuzu kirletmeyin. Bu hiçbir şeyden başka bir şeye yol açmaz ve sorgulamayı acımasız bir şekilde yavaşlatır.

+0

Satırlar nadiren silinmiş veya güncellenmiş olsa bile sorgulama yavaş olabilir mi? – Gregology

+0

Ne kadar sık ​​gerçekleştiğine bakılmaksızın, tablodaki her sorguda silinmesi veya gözden geçirilmesi için sınamanız gerektiğinden, yavaştır. 'SELECT * sayfalardan WHERE = 1 =, SELECT * gibi sayfalardan WHERE instance_id = 1 olur ve delete_at ISITILIRSIZ SINIRLANDIRILMIŞTIR. – tadman