Siti Web di uso interno: esiste un caso convincente contro SQLite?

23

Molti framework web, come Flask o Django utilizza SQLite come database predefinito. SQLite è interessante perché è incluso in python e l'overhead amministrativo è piuttosto basso.

Tuttavia, la maggior parte dei siti di produzione pubblica ad alto traffico si avvale di un database più pesante: mySQL, Oracle o postgresql.

Le domande :

Si supponga:

  • Il traffico del sito è moderato e l'accesso simultaneo in lettura / scrittura al database avverrà
  • Useremo SQLAlchemy con Blocchi di scrittura SQLite (anche se questo commento mi rende un po 'nervoso)
  • Il database conterrà forse 60.000 record
  • Le strutture dati non richiedono funzionalità avanzate presenti nei database più pesanti

C'è mai un caso convincente contro la SQLite concorrenza per i siti web che fungono da strumenti aziendali interni a traffico moderato? In tal caso, quali condizioni causeranno SQLite per avere problemi di concorrenza?

Sto cercando cause radice specifiche conosciute, invece di paura generale / puntamento del dito non dimostrato.

    
posta Mike Pennington 02.12.2013 - 13:29
fonte

2 risposte

23

Raccomando di leggere la risposta ufficiale alla tua domanda, Usi appropriati per SQLite . Nello specifico, le "Situazioni in cui un altro RDBMS può funzionare meglio" avverte che SQLite non supporta la scrittura simultanea:

SQLite supports an unlimited number of simultaneous readers, but it will only allow one writer at any instant in time. For many situations, this is not a problem. Each application does its database work quickly and moves on, and no lock lasts for more than a few dozen milliseconds. But there are some applications that require more concurrency, and those applications may need to seek a different solution.

Da una prospettiva di appropriatezza, tendo a vedere SQLite come un formato di file molto sofisticato che supporta le query SQL. Tenderei ad evitare SQLite se volessi separare il mio database dalla mia applicazione web, in quanto non è ottimizzato per questo caso. In breve, SQLite non è sufficientemente scalabile per l'uso in alcuni scenari, quindi le persone che gestiscono siti Web che sperano di diventare popolari potrebbero iniziare con qualcosa di scalabile, piuttosto che utilizzare SQLite e in seguito essere costretti a cambiare.

Tutto ciò che viene detto, SQLite probabilmente va bene per la maggior parte dei siti Web interni; tipicamente i siti web interni non richiedono lo stesso livello di concorrenza e scalabilità.

    
risposta data 02.12.2013 - 16:31
fonte
4

Mettendo il mio cappello IT Director vedo alcuni no-go qui:

  • Rischio di corruzione dei dati. Forse più percepito che reale ma alla fine del giorno si tratta di un DB di tipo di file non transazionale che non ha molto se non ricorso a scritture errate oltre a chiedere se hai un backup recente. A proposito. . .
  • Come faccio a sostenere questa cosa? In un certo senso, so di avere una buona copia. Preferibilmente senza portare l'app offline.
  • Come posso proteggere l'accesso al DB? La mia comprensione generale è che SQL lite non ha nessuno al di fuori dell'accesso al filesystem, il che è un inizio decente, ma non il tutto, tutto alla fine. Soprattutto per le app web in cui potresti desiderare autorizzazioni più graduali rispetto a DBA o nulla.

Dal punto di vista dello sviluppatore, penso che sia importante sapere perché SqlLite è l'impostazione predefinita, perché è facile e dimostra bene. Se si sta "vendendo" una piattaforma ai nuovi sviluppatori, è fondamentale poter attivare un'app Web funzionante con il minimo sforzo. E dover stare in piedi e configurare correttamente un server di database sarebbe un enorme ostacolo da evitare.

    
risposta data 02.12.2013 - 23:44
fonte

Leggi altre domande sui tag