Forum >> Programmazione Python >> Database >> sqlite3 in rete

Pagina: 1 2 Avanti

Salve a tutti, volendo usare un database "leggero" come SQLlite3 in rete come posso fare ?



Al lavoro utilizzo un programma che lavora con Access, e nella cartella del server c'e' un database riferito ad ogni utente, oltre naturalmente al core.mdb che è il db principale.

Ipotizzando di avere 5/6 utenti che accedano al mio Sqlite , potrei applicare lo stesso concetto ? (ammesso che i db degli utenti servano a questo)




In pratica i farei un db principale e poi farei tanti db quanti sono gli utenti; vorrei fare in modo che gli utenti quando leggono il db leggano il principale mentre quando scrivono il db scrivino su quello personale; pensavo poi di fare una procedura sul server che con scadenza di 20/30 secondi controlli se nei vari db locali ci sai quancosa di nuovo e... se si lo copia nel db principale "leggibile da tutti".




Se avete capito cosa intendo fare , dice che sia fattibile ??




In questo modo dovrei evitare di incorrere nella possibilità di trovare il db bloccato in scrittura.




Accetto suggerimenti...

Grazie




Alberto
------
Alberto
Ciao Alberto,

forse potresti valutare l'utilizzo di https://litesync.io/en/ o https://litestream.io/

THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ciao Alberto,

forse potresti valutare l'utilizzo di https://litesync.io/en/ o https://litestream.io/


Ciao cm , questo applicativo però mi sembra che faccia il backup del db , il mio discorso era che scrivo sul mio db personale e poi ogni tanto copio aggiornando il db principale con i mei dati.

O forse non ho capito come dovrei/potrei usare il software che mi hai linkato ?

Grazie
------
Alberto
...
In pratica i farei un db principale e poi farei tanti db quanti sono gli utenti; vorrei fare in modo che gli utenti quando leggono il db leggano il principale mentre quando scrivono il db scrivino su quello personale; pensavo poi di fare una procedura sul server che con scadenza di 20/30 secondi controlli se nei vari db locali ci sai quancosa di nuovo e... se si lo copia nel db principale "leggibile da tutti".
...
Scusa la domanda, in genere utilizzo altri db per certe cose, ma c'è un qualche motivo che rende difficile l'utilizzo di un singolo database con accesso concorrente?

Tutto sommato i tempi di scrittura non dovrebbero essere eccessivi, la concorrenza minima con 5-6 utenti e racchiudendo l'operazione di scrittura in blocchi "begin concurrent -> commit" l'interferenza dovrebbe essere minima.

Fatti non foste a viver come bruti...
Ipotizzando di avere 5/6 utenti che accedano al mio Sqlite , potrei applicare lo stesso concetto ? (ammesso che i db degli utenti servano a questo)

In pratica i farei un db principale e poi farei tanti db quanti sono gli utenti; vorrei fare in modo che gli utenti quando leggono il db leggano il principale mentre quando scrivono il db scrivino su quello personale; pensavo poi di fare una procedura sul server che con scadenza di 20/30 secondi controlli se nei vari db locali ci sai quancosa di nuovo e... se si lo copia nel db principale "leggibile da tutti".
Ciao caro, sì ho capito la richiesta e mi sembra una pessima idea (se posso permettermi). Questo è uno di quei casi in cui si cerca una soluzione che però porta più guai che altro. Ma poi, quali e quanti tipi di dati devi scrivere, per così pochi utenti possibile sia necessario un DB a persona?

Ti consiglierei di rivedere il flusso ipotizzato e fare comunque delle prove usando un solo DB sia il lettura che in scrittura, io almeno fare così se fossi nella tua situazione.

Se poi i risultati fossero pessimi, più che consigliarti multipli DB, andrei semplicemente su qualcosa di un po' più "carrozzato" di SQLite.

Cya

Il database “at personam” lo avevo pensato per evitare che se due scrivessero qualcosa casualmente in contemporanea non avrei avuto problemi.
Poi visto che qualcuno più esperto di me mi dice perché non uso altri tipi di db (io ho sol una minima esperienza in SQLite) … potrei anche provare ma non saprei cosa usare che abbia la contemporaneità eventuale e che non sia troppo “complesso”.

Per rispondere ad una domanda i datai da scrivere sarebbero pochi, una riga di db con una 10na di campi.




Grazie
------
Alberto
Beh potresti avere ritardi nella scrittura, ma non credo altri disagi visti gli accessi esigui.

Penserei di implementare un sistema un po' diverso, con il database trasparente per gli utenti. Si accederebbe solo la tua macchina, tramite magari un web-framework alla FastAPI (che è semplicissimo), ricevendo/esponendo/scrivendo le richieste poi dal/al DB. In questo modo potresti gestirti in maniera piuttosto semplice anche le code in entrata e non aver paura di qualche perdita accidentale.

utenti <--> framework <--> database

Però certo, capisco quello che stai pensando, se è una singola riga con 10 valori... beh beh beh disse la pecora, forse la fatica supera il gusto e lascerei il tutto come è adesso.

Ma chissà, vedi tu quanto ti vuoi ancora divertire, sarebbe una cosa non necessaria, ma una scusa per imparare una cosa nuova.

Cya
Teniamo conto che ci sono pochissime possibilità che 2 utenti scrivano in contemporanea.



In tutti i casi che framework mi suggeriresti, oppure che database multi utente; cosi magari ci do un occhio.




Con i miei accessi contemporanei (quasi nulli) dici che si inutile la soluzione di più database ?




Grazie
------
Alberto
Teniamo conto che ci sono pochissime possibilità che 2 utenti scrivano in contemporanea.
Eh infatti.
In tutti i casi che framework mi suggeriresti, oppure che database multi utente; cosi magari ci do un occhio.

Te l'ho scritto, FastAPI.
Con i miei accessi contemporanei (quasi nulli) dici che si inutile la soluzione di più database ?
Per me sarebbe non solo inutile, ma fioriera di problemi, non la seguirei come soluzione.
Grazie

Di nulla figurati, buon divertimento.

Cya

Buonasera, da prove fatte sembre funzionare senza errori di accessi simultanei…. Ora il problema è diverso.
Avendo il db che lavora in solitaria su un Nas, ora sorge il problema di avvisare l’utente destinatario dell’ultimo messaggio inviato al db. (Che è arrivato un nuovo messaggio x lui)

Come posso fare ?

Interrogare ogni tot secondi per verificare la presenza di messaggi nuovi da parte di tutte le postazioni coinvolte?

Come posso fare a capire se il messaggio è nuovo ? Nei campi del db non è previsto un campo ora ma solo la data. (Dovrei fare un confronto con uno stato precedente ….)

Grazie per i suggerimenti che riuscirete a darmi.




Alberto
------
Alberto


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.