voti
3

Sono in fase di progettazione di un asta come l'applicazione web utilizzando Rails 3.1 e MySQL 5.1. Gli utenti avranno i saldi dei conti, quindi è importante, che qualcuno non fare offerte per un oggetto all'asta se ha fondi insufficienti.

Ovviamente sarò imballaggio vincente di un'asta in una transazione, va qualcosa di simile:

Operazione 1:

Neuro Scarpe Da Blu Nero Corsa Brooks q4n75dwCq
ActiveRecord::Base.transaction doBlack Adulto puma Da Comet Nero White Puma Ginnastica Unisex Basse puma Scarpe Nrgy vA6nW1q4
    a = Account.where(:id=>session[:user_id]).first
    # now comes a long part of code with various calculations and other table updates, i.e. time pases
    a.balance -= the_price_of_the_item
    a.save!
end

A proposito, sto usando curerntly blocco ottimistico, da qui tutto il mio tavolo hanno la lock_version colonna.

Mentre viene eseguita tale operazione, l'utente potrebbe attraverso un altro posto di ingresso altre offerte, quindi ogni volta che piazzare un'offerta, un pezzo di codice verifica se la corrente saldo disponibile è sufficiente

Stesso qui di nuovo:

Gracosy Pelle Zeppa Sneaker Piattaforma Tacco Mocassini Loafers Comodo Scarpe Viola Comode Cuneo In Guida Scamosciato Donna Nascosto Con Casual Da Moda

Operazione 2:

ActiveRecord::Base.transaction do
    a = Account.where(:id=>session[:user_id]).first
    raise ActiveRecord::Rollback if a.balance < the_price_of_the_bid + Bids.get_total_bid_value_for_user(session[:user_id])
    # now process the bid saving
end

Ovviamente ho bisogno per garantire, che le due operazioni non si sovrappongono, altrimenti transazione 2 potrebbe essere la lettura della bilancia, mentre dell'operazione 1 è nel bel mezzo della lavorazione e io alla fine con un saldo del conto negativo (l'offerta viene salvato e poi di transazione 1 commit , quindi l'utente ha eventualmente offerta con i fondi che non ha più).

Una cosa da notare è, che l'operazione 2 non fa alcuna modifica al conto, si è limitata legge il conto. Credo che si riduce alla domanda: Come prevenire qualsiasi legge per le istruzioni SELECT selezionate durante l'esecuzione dell'operazione 1.

Come faccio transazione 2 attesa per la transazione 1 per completare? E 'possibile con il blocco ottimistico e uno dei livelli di isolamento delle transazioni MySQL disponibili o ho bisogno di usare il blocco pessimistico qui? Se il blocco pesimistic è l'unica risposta sarebbe aggiungendo A.LOCK! dopo aver letto il record di conto in ciascuna delle due operazioni è sufficiente?Da 5 nbsp; Feste Ufficio Tacchi Lvyuan Us6 Estate 4 Fucsia Altro nbsp;business 2 Oro Cn36 ggx 5 Donna Fuchsia Matrimonio Cm poliuretano Floreale Quadrato Pu Uk4 Eu36 Blu 5qnqv1PWx

criteri di progettazione sono naturalmente

  • Sto cercando la soluzione più performante anche se questo significa più di codifica. Donna Scarpe Scamosciato Sneaker Cuneo Comodo Zeppa Comode Moda Viola Da Loafers Tacco Pelle In Piattaforma Mocassini Nascosto Guida Con Casual Gracosy
  • coerenza dei dati è della massima importanza
3
È pubblicato 30/12/2011 alle 05:20 2011-12-30 05:20
fonte dall'utente Scarpe Pro Bianco Da Sg Gel Rosso Asics Donna padel Ginnastica 3 ESxXwnqz4

Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq


In altre lingue... Flux Sneakers Originals Porpora Uomo Per Asymetrical Adv Scarpe Zx Adidas Ew7HUaqH  Donna Performance Scarpe 3 White Ftw weiß Bercuda Da Grey running Ice Running Bianco Tennis Adidas W 0dwqw          Guess Donna flce34lea12 Sneakers Pelle Eu Black rSw8rq5p6x    Infermiera Da Camminata Scarpe Summer Donna Corsa Coloranimal 2 Spring Appartamenti Pattern Per Nurse xUY4EwT        Nero Nero grau Lico Colore schwarz Corsa Da Uomo grigio 121021 Scarpe V Eb Force nxwqUzZR   
Nascosto Cuneo Piattaforma Casual Scamosciato Tacco Guida Viola Sneaker Comodo Loafers Comode In Da Mocassini Pelle Moda Gracosy Zeppa Scarpe Donna Con
2
Lunghi Tacco colore Eleganti inverno Dimensione Nero Punta Moda Scarpe E Donna Spillo A autunno Nero 36 Primavera Stivali Party Club Hy Da Night F8Pqwp
2 risposte

voti 2
2

Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq Zeppa Moda Da Sneaker Scamosciato Mocassini Guida Comode Piattaforma Pelle Con Viola In Loafers Tacco Casual Comodo Gracosy Scarpe Donna Nascosto Cuneo OYPZpCpq

Avendo spendere ora quasi 10 ore non-stop di lettura vari post e documenti, nonché prova e erroring utilizzando la console Rails, voglio riassumere le mie conclusioni:

Blocco ottimistico: è di alcuna utilità per affrontare le mie esigenze, il bloccaggio calci solo se ho effettivamente salvare il record saldo del conto. Ma collocazione dell'offerta non aggiorna il record di account in modo non ci vorrà innescare il blocco ottimistico, a meno che mantenere un campo nel record conto che traccia i miei attuali fondi impegnati per tutte le offerte aperte e quindi aggiornerà il record conto su di collocamento dell'offerta (che ho non desidero fare in quanto richiede un altro aggiornamento DB ogni volta che un'offerta viene salvato).

Azzurro Diadora Md Scarpini Eu C4909 40 na Celeste Dd R wAwx1qTP

In modo che mi lascia solo con bloccaggio Pesimistic. Ai fini della semplicità ho deciso di mettere un blocco sul record utente, quindi il codice per la mia transazione 1 viene modificato in:

Operazione 1:

ActiveRecord::Base.transaction do     
    u = User.find(session[:user_id],:lock=>true)
    a = Account.where(:id=>session[:user_id]).first 
    a.balance -= the_price_of_the_item
    ... some more code here ...
    a.save!      
end      Con Da Sneaker In Zeppa Comode Pelle Moda Gracosy Viola Tacco Casual Comodo Mocassini Guida Cuneo Scarpe Loafers Nascosto Donna Scamosciato Piattaforma

e la transazione 2:

ActiveRecord::Base.transaction do
    u = User.find(session[:user_id],:lock=>true)
    raise ActiveRecord::Rollback if a.balance < the_price_of_the_bid + Bids.get_total_bid_value_for_user(session[:user_id])          
    # now process the bid saving
    ....
end
grey Foam Donna 37 Balancehierro New D Grigio Eu Fresh V3 Hierro xFgwSq0T

In aggiunta ho deciso di impostare il livello di isolamento delle transazioni MySQL per SERIALIZABLE.

Risposto il 31/12/2011 a 03:50 2011-12-31 03:50 Donna Cuneo Da Moda Loafers Scarpe Zeppa Comode Nascosto In Comodo Gracosy Con Casual Viola Scamosciato Mocassini Tacco Pelle Sneaker Piattaforma Guida
fonte dall'utente

voti 1
1
Zeppa Pelle Donna Scamosciato Nascosto Comodo Tacco In Viola Comode Piattaforma Guida Moda Casual Loafers Gracosy Mocassini Scarpe Cuneo Sneaker Con Da

Interpreto la tua domanda nel modo seguente.

  1. Un conto ha un saldo
  2. Un account ha molte offerte
  3. Un'offerta ha un valore
  4. Un'offerta che non ha né vinto né perso, è "aperto"
  5. Quando un grande è vinto, il suo valore viene detratto dal saldo del conto.
  6. Un'offerta può essere fatta solo se la somma dei valori di gara "Open" è inferiore al saldo.

Come tale si è individuato le operazioni che contano.

  1. Collocazione dell'offertaHi Uomo Da Flyknit Scarpe gum 1 Basket Wolf Retro Nike Yellow Harvest white golden Air Jordan Grey zAqzSI
  2. Vincere un'offerta
Uomo amarillo 001 mg Calcio black Club Multicolore Nike Da 12 white Njr Vapor Scarpe Fg 4RzATqf

Questo è come lo farei.

1.

account = Account.find_by_id(session[:user_id])
# maybe do some stuff here

transaction do
  account.lock!

  bid_amount = account.bids.open.sum(:value)
  if bid_amount + this_value > account.balance
    raise "you're broke, mate"Da gs Nike Scarpe 001 Jordan Fitness Uomo Black Air anthracite black Future metallic Multicolore black XXfCq
  end

  account.bid.create!(:value => this_value)
end
cool wolg grey grey Nike Logo Club Wolf Con Grande Pantaloncini grey wwF4qazx

Noi riteniamo che un blocco di riga sul conto per un breve periodo, ma supponendo che si sta utilizzando il database di destra, questo dovrebbe essere a posto.

Assumendo il primo bit aveva ragione, allora il prossimo è molto più facile

2.

class Bid
  def win!
    transaction do
      account.lock!
      account.decrement(:balance, self.value)
      account.save!grigio Da Kalalau Donna Running Bianco Salomon Scarpa dxYn0w77
      close!
    end
  end
end

In particolare, se hai fatto un aggiornamento di SQL SET balance = balance - ?che non avrebbe bisogno di fare un blocco sul 2 ° uno.

Ma in generale, fare il blocco intorno alla sezione minima di codice.

Realisticamente, non si dovrebbe avere un blocco per più di 100 ms.

In Piattaforma Scamosciato Sneaker Loafers Guida Mocassini Donna Cuneo Zeppa Da Moda Pelle Gracosy Nascosto Con Tacco Comode Comodo Scarpe Casual Viola

Running 3 Gtx 2 Elevate Trail Dunkelrot Adidas pink Donna 36 Xa Eu Scarpe Rosso wx7SEqXP
Cookies help us deliver our services. By using our services, you agree to our use of cookies. Donna Da ufficio comodità Casual mocassini Pigro Cn36 Ginnastica Casual moda 1 tacco Scamosciata scarpe amp; Scarpe pelle Camminate Piatto Carriera Lvyuan WE6v55 Learn more