Re: [Python] python SQL?

2014-02-16 Per discussione Daniele Tricoli
Ciao Carlos,

On Sunday 16 February 2014 08:51:36 Carlos Catucci wrote:
 il poter svilupppare in locale, per dire, su
 Sqlite e poi andare in produzione con Postgres, cosa che mi facilita di
 molto le cose

... e ti fa attendere il deploy sullo staging server per scoprire eventuali 
problemi legati all'uso di un database diverso da quello di produzione! :-)



-- 
 Daniele Tricoli 'Eriol'
 http://mornie.org
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 10:15 GMT+01:00 Daniele Tricoli er...@mornie.org:

 ... e ti fa attendere il deploy sullo staging server per scoprire eventuali
 problemi legati all'uso di un database diverso da quello di produzione! :-)


Beh che vuoi, nessuno e' perfetto ;)

Comunque posso fare una macchina di test uguale a quella di produzione da
subito e fare le prove, pero' per il quotidiano se il progetto e'
condiviso, aiuta.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Daniele Tricoli
On Sunday 16 February 2014 10:35:51 Carlos Catucci wrote:
 Beh che vuoi, nessuno e' perfetto ;)

Mai detto il contrario! :-)
 
 Comunque posso fare una macchina di test uguale a quella di produzione da
 subito e fare le prove, pero' per il quotidiano se il progetto e'
 condiviso, aiuta.

Sì certo, il mio pensiero, appunto è che bisogna comunque conoscere il 
tradeoff che si fa utilizzando una determinata soluzione, soprattutto visto 
che l'OP si sta affacciando per la prima volta su questo specifico argomento.

L'ORM ti dà flessibilità, ma ti nasconde feature specifiche di un 
determinato database, e la domanda da porsi, IMHO, è: quanto costa tale 
flessibilità? E quanto senso ha accettare tale costo?
Per la maggior parte dei progetti il costo sarà anche nullo (anche in termini 
di debito tecnologico), ma non possiamo escludere che in alcuni casi la 
flessibilità di poter cambiare database di produzione è una feature che non 
verrà mai sfruttata. :-)

Per quanto riguarda il testing, nel caso in cui lavorassimo ad un progetto 
insieme ti proporrei, al posto di un database SQLite da condividere, di usare 
un ORM (così si fa in fretta :D) per creare delle testsuite al volo (da poi 
integrare correttamente però) per poter dire cose del tipo:

«Carlos, dai un'occhiata a sandobox/eriol/test_for_1234.py?»

Dove test_for_1234.py andrebbe a mettere in evidenza il problema creando da 
zero il database e riempiendolo[¹]. Uno dei vantaggi che mi viene subito in 
mente è che nel caso in cui stessimo indagando problemi diversi che impattano 
la stessa parte del database, possiamo condividere il problema senza dover 
condividere due db SQLite, ad esempio.

Ma la parte più importante è l'essersi messi d'accordo tra noi su come fare il 
testing condiviso! :-)

Buona domenica,

[¹] niente fixture please ;-)

--
 Daniele Tricoli 'Eriol'
 http://mornie.org
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione enrico franchi
2014-02-16 7:51 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:


 De gustibus non disputandum est.


Sulle cose tecniche di solito non e' questione di *gusti*.

Ci sono due questioni principali. Una completamente filosofica:

1. Ci sono un botto di pattern architetturali per fare ORM. I piu' popolari
fuori da casa ms sono active record e data mapper. Guarda caso, nessuno dei
due e' perfetto. Il motivo e' che il problema di mappare il modello
relazionale sul modello ad oggetti e' vagamente ill-defined per vari motivi
(fra cui il fatto che il modello ad oggetti e' un pochetto ill-defined di
suo e soprattutto tende ad ammettere piu' soluzioni ad uno stesso problema
con differenti trade-offs). Per cui anche a livello teorico si hanno vari
compromessi... e.g., il design di active record e' molto leaky, data mapper
e' relativamente complesso concettualmente.

Ma poi proprio semplicemente ci sono cose molto naturali nel mondo ad
oggetti che si mappano malissimo nel mondo relazionale e viceversa. E per
queste situazioni l'orm non e' che puo' fare davvero molto...

La seconda molto pratica: quello che e' un ORM e' un oggetto appiccicato
sopra uno dei colli di bottiglia tipici delle applicazioni. Il che vuole
dire che e' veramente molto sensibile alle performance. E semplifica molto
la scrittura di query inefficienti. Ora, come si puo' notare dalla
permanenza in una qualunque lista come questa, se le persone hanno una
feature vagamente comoda da usare, ne abuseranno inconsapevolmente,
insegneranno ad altri il loro trucco e poi si lamenteranno che tutto va
piano (appena i dati crescono). Siccome sono clueless, ovviamente non
avranno idea di quello che e' successo e risolveranno in vari modi
(prendendo un consulente, generalmente per un altro linguaggio, cambieranno
database, riscriveranno tutto, andranno avanti a lamentarsi senza fare
nulla, dando la colpa a componenti casuali dell'architettura). Ora in tutto
questo non e' che ci sia nulla di male, semplicemente il fatto e' che cose
facili da fare e drammaticamente inefficienti saranno fatte
*inconsapevolmente*.

Il punto chiave e' che la gente pensa architetture varie ad oggetti e
sfruttera' la flessibilita' dell'orm per martellarci dentro il pattern di
accesso ai dati che piu' gli pare, non necessariamente uno buono.

Su tutto questo, si infila il problemino tipico dei linguaggi ad oggetti: i
dati occupano quintali di memoria non necessaria perche' sono pesantemente
nested. E avere un sistema comodo per generare una comoda interfaccia ad
oggetti vuole dire che le cose saranno fatte cosi'.

E voglio dire... ricordati che i dati nel db sono, auspicabilmente univoci.
tipicamente hai un db per applicazione, dentro cui hai i dati. un db
logico: potrebbe essere shardato, auspicabilmente e' replicato, etc etc
etc. I dati sono li e non danno fastidio.

Poi scopri che hai una piccola flotta di server. Ciascuno di questi tira su
un po' di worker. Ed ecco che le query che ti tirano su x MB di oggetti, in
realta' finisce che ti tirano su x00 MB *globalmente*. E cominci ad avere
problemi. E si, memcache, orpelli, cazzi e mazzi.

Oh, poi voglio dire, se hai un magazzino con duemila oggetti, chissene. Se
devi fare il payroll per duecento dipendenti, chissene. Se devi fare il
blog, il forum e chissene... il problema e' che non scala. Non scala. Non
ci sono cazzi.



 Io personalmente li trovo comodi. Il non dover impazzire tra dialetti, il
 poter svilupppare in locale, per dire, su Sqlite e poi andare in produzione
 con Postgres, cosa che mi facilita di molto le cose (per dirne una se
 aggiungo dati di test alla base dati un push sul repo condiviso (*) rende
 disponibile la cosa a tutti i coinvolti nel progetto senza dover eseguire
 un dump da allegare e un db_restore dopo un pull) senza impazzire sui
 dialetti e sulle varie differenze (sacrosante, ciascun Db ha il suo motivo
 di esistere, di essere specializzato in qualcosa, tranne forse un paio).


Comodo, forse. Stiamo pero' contando *molto* che l'astrazione sia perfetta
e non si stia nascondendo un baco che ti comparira' sulle macchine di test
o addirittura in produzione. Vuole anche dire che non puoi usare nulla di
specifico di PostgreSQL, che, sebbene accettabile, e' comunque una forte
limitazione.

Poi ovvio che se devo fare una query particolarmente incasinata (e accade
 SOLO se lavoro su basi dati esistenti, in caso contrario se e' roba mia
 parto dal presupposto di avere sbagliato l'architettura e riprogetto di
 conseguenza) posso usrae una raw, ma deve essere davvero un caso limite
 dove l'ORM non ce la fa.


L'architettura del db deve essere *sempre* il piu' efficiente possibile. Se
no, non ja fa. E si, sharda, cazzi e mazzi, per carita'.

Il problema e' che anche su query relativamente semplici succedono cose.



 Lo so, mi direte che l'ORM non ottimizza come puo' fare una query scritta
 ad hoc, ma a volte la flessibilita' conta piu' delle prestazioni.


Non nel mio caso. Aggiungere host non necessari cessa di 

Re: [Python] python SQL?

2014-02-16 Per discussione Diego Barrera

On 16/02/2014 12:40, enrico franchi wrote:


L'architettura del db deve essere *sempre* il piu' efficiente 
possibile. Se no, non ja fa. E si, sharda, cazzi e mazzi, per carita'.


Alla luce di questo e avendo in mente che devo andare in produzione il 
prima possibile,
(leggi per ora mi interessa poco scalare, ma mi server avere una killer 
app per vedere come va)

che succede se opero in questo modo:

1. creo model e tutta app con l'orm;
2. l'app funziona e ho tanti clienti: primi problemi a scalare
3. ottimizzo sql e impostazioni specifiche dbms

Mi sembra un buon compromesso.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Riccardo mancuso
per cose piccole, SQLite


Il giorno 16 febbraio 2014 13:33, Diego Barrera
diegonebarr...@yahoo.itha scritto:

 On 16/02/2014 12:40, enrico franchi wrote:


 L'architettura del db deve essere *sempre* il piu' efficiente possibile.
 Se no, non ja fa. E si, sharda, cazzi e mazzi, per carita'.

  Alla luce di questo e avendo in mente che devo andare in produzione il
 prima possibile,
 (leggi per ora mi interessa poco scalare, ma mi server avere una killer
 app per vedere come va)
 che succede se opero in questo modo:

 1. creo model e tutta app con l'orm;
 2. l'app funziona e ho tanti clienti: primi problemi a scalare
 3. ottimizzo sql e impostazioni specifiche dbms

 Mi sembra un buon compromesso.

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Manlio Perillo

On 15/02/2014 20:55, Carlos Catucci wrote:


2014-02-15 19:56 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com
mailto:manlio.peri...@gmail.com:

ma senza l'ORM, solo sqlalchemy.sql


Per curiosita' da ignorante, ma perche' non l'ORM? Non ti piaciono gli
orm o e' un qualcosa di SQLAllchemy in particolare che non va?



Perchè, in questo caso specifico, un ORM è una bestia molto complessa, e 
consigliarlo ad uno che adesso sta cominciando con i database 
relazionali non è una buona cosa.


Riguardo i gusti personali, gli ORM poi non mi piacciono perchè li 
reputo una astrazione sbagliata sopra il modello relazionale.


 [...]


Ciao   Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Perini Matteo

Il 16/02/2014 14:04, Manlio Perillo ha scritto:
Perchè, in questo caso specifico, un ORM è una bestia molto complessa, 
e consigliarlo ad uno che adesso sta cominciando con i database 
relazionali non è una buona cosa.

Ciao,
sto seguendo con interesse ma il livello si è alzato un po' ;)

Cerco di spiegarvi cosa vorrei fare.
Per adesso si tratta di una piccola  applicazione  per tener traccia di 
accessi e pagamenti per una associazione.


Scenario:
Qualche centinaio di utenti avranno una carta RFID (codice univoco) con 
la quale potranno accedere alla sala dell'associazione.
Ad ogni codice nel db corrisponderà l'anagrafica, numeri di telefono 
ecc, una decina di cose specifiche dell'associazione.
Oltre a questo, ogni ingresso/uscita andrebbe immagazzinato da qualche 
parte.
All'ingresso vi sarà anche un controllo se l'utente è in regola con i 
pagamenti delle quote associative.
Gli utenti possono essere di vario tipo (studenti/Adulti/pensionati) con 
vari tipi di possibile associazione (mensile/annuale/n°di ingressi).
Tutti i controlli verranno fatti via sw appoggiandomi ad un db (sto 
propendendo per mongodb... ma non sono ancora sicuro)


Ho visto un po' di differenze tra db relazionali e documentali e penso 
che per il mio caso non faccia molta differenza quale uso. (il numero di 
campi sarà fisso)
Anche i tempi delle varie query penso siano insignificanti in entrambi i 
casi visto che si parla di qualche migliaio di dati.
Non mi è invece molto chiaro come posso immagazzinare tutte le date/ora 
degli ingressi e uscite? suggerimenti?


Come facilità d'uso cosa mi consigliate? mongodb? SQLite?

Dimenticavo... l'accesso al db avverrà sempre dallo stesso sw ma in due 
modi distinti, tramite la gui con richiesta dell'utente e, in automatico 
quando un utente passa la tessera con l'RFID, servirà prevedere thread 
per questo?


Scusate se non ho chiarito prima questi punti che avrebbero potuto 
aiutarvi ad aiutarmi ma da non avevo proprio idea di come partire.


Grazie dell'aiuto (anche di domenica)
Ciao
M.


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Manlio Perillo

On 16/02/2014 14:50, Perini Matteo wrote:

Il 16/02/2014 14:04, Manlio Perillo ha scritto:

Perchè, in questo caso specifico, un ORM è una bestia molto complessa,
e consigliarlo ad uno che adesso sta cominciando con i database
relazionali non è una buona cosa.

Ciao,
sto seguendo con interesse ma il livello si è alzato un po' ;)



Puoi tranquillamente ignorare i punti più complessi ;)


Cerco di spiegarvi cosa vorrei fare.
Per adesso si tratta di una piccola  applicazione  per tener traccia di
accessi e pagamenti per una associazione.

Scenario:
Qualche centinaio di utenti avranno una carta RFID (codice univoco) con
la quale potranno accedere alla sala dell'associazione.
Ad ogni codice nel db corrisponderà l'anagrafica, numeri di telefono
ecc, una decina di cose specifiche dell'associazione.
Oltre a questo, ogni ingresso/uscita andrebbe immagazzinato da qualche
parte.
[...]

Ho visto un po' di differenze tra db relazionali e documentali e penso
che per il mio caso non faccia molta differenza quale uso. (il numero di
campi sarà fisso)
Anche i tempi delle varie query penso siano insignificanti in entrambi i
casi visto che si parla di qualche migliaio di dati.


Un database server come PostgreSQL offre molta flessibilità.
Semplicemente lo installi su un server (magari separato da quello dove 
si trova il client, e gestito in modo da avere una buona sicurezza e 
backup); questo è uno dei vantaggi rispetto ad esempio ad SQLite.


Personalmente mi allontanerei dal modello relazionale *solo* se fa 
differenza quale modello uso.



Non mi è invece molto chiaro come posso immagazzinare tutte le date/ora
degli ingressi e uscite? suggerimenti?



Non mi sembra complesso.  Quale problema vedi?


Come facilità d'uso cosa mi consigliate? mongodb? SQLite?



Devi innanzitutto distinguere tra modelli di dati.
mongodb e SQLite usano modelli di dati differenti.

Per una differenza tra i vari modelli, vedi le pagine di wikipedia per 
mongodb e PostgreSQL, in particolare:

http://en.wikipedia.org/wiki/Document-oriented_database
http://en.wikipedia.org/wiki/Relational_database

Sono argomenti abbastanza ampi, inizia a documentarti e magari se hai 
dubbi chiedi.  Tieni presente che sto assumendo tu voglia imparare ad 
usare un database.  In alternativa puoi anche iniziare leggendo la parte 
introduttiva della documentazione di PostgreSQL o mongodb.


Se ti va bene il modello relazionale, SQLite è sicuramente più semplice 
di PostgreSQL (e lo hai incluso in Python), ma ha diverse limitazioni.



Dimenticavo... l'accesso al db avverrà sempre dallo stesso sw ma in due
modi distinti, tramite la gui con richiesta dell'utente e, in automatico
quando un utente passa la tessera con l'RFID, servirà prevedere thread
per questo?



Cosa intendi?

 [...]


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 14:04 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:

 Riguardo i gusti personali, gli ORM poi non mi piacciono perchè li reputo
 una astrazione sbagliata sopra il modello relazionale.


A dire il vero ultimamente mi sono trovato con diversi progetti dove il
problema era proprio il modello relazionale. Va detto che si tratta di un
campione neppure lontanamente rappresentativo. Voglio dire anche se negli
ulltmi 4 progetti 3 venivano meglio con dei NoSql (piu' naturali le
costruzioni delle basi dati, piu' naturale usarle, aggiornarle, recuperare
i dati rapidamente etc.) 4 progetti non bastano per dire che nel 75% dei
casi sia cosi'. Facile che i prossimi 100 (se avro' la fortuna di lavorare
a tanti) potrenbbero essere meglio con il relazionale.

La tentazione di usare una struttura piu' nested come quella di MongoDb per
fare certe cose e' sempre forte. Poi da vedere se paga o meno.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 14:50 GMT+01:00 Perini Matteo perini.mat...@gmail.com:

 sto seguendo con interesse ma il livello si è alzato un po' ;)


Sai come finiscono ste cose, uno fa una domanda innocente (la mia sugli
orm) e ne viene fuori una tavola rotonda.

Pero' fa sempre bene ascoltare chi ne sa di piu', pure se, come mi sta
accdendo in qualche passaggio, devi prima googlare un poco solo per avere
idea vaga di cosa stiano dicendo ;)


 Cerco di spiegarvi cosa vorrei fare.
 Per adesso si tratta di una piccola  applicazione  per tener traccia di
 accessi e pagamenti per una associazione.

 Scenario:
 Qualche centinaio di utenti avranno una carta RFID (codice univoco) con la
 quale potranno accedere alla sala dell'associazione.
 Ad ogni codice nel db corrisponderà l'anagrafica, numeri di telefono ecc,
 una decina di cose specifiche dell'associazione.
 Oltre a questo, ogni ingresso/uscita andrebbe immagazzinato da qualche
 parte.
 All'ingresso vi sarà anche un controllo se l'utente è in regola con i
 pagamenti delle quote associative.
 Gli utenti possono essere di vario tipo (studenti/Adulti/pensionati) con
 vari tipi di possibile associazione (mensile/annuale/n°di ingressi).
 Tutti i controlli verranno fatti via sw appoggiandomi ad un db (sto
 propendendo per mongodb... ma non sono ancora sicuro)


Io sapevo (ma posso sbagliarmi) che Mongo Db (che ribadisco quanto detto
altrove trovo MLTO carino) era pensato per grosse moli di dati.


 Ho visto un po' di differenze tra db relazionali e documentali e penso che
 per il mio caso non faccia molta differenza quale uso. (il numero di campi
 sarà fisso)


Cosa che porta piu' verso il relazionale, o meglio, che e' caratteristica
buona per un relazionale (*).


 Anche i tempi delle varie query penso siano insignificanti in entrambi i
 casi visto che si parla di qualche migliaio di dati.
 Non mi è invece molto chiaro come posso immagazzinare tutte le date/ora
 degli ingressi e uscite? suggerimenti?


Campi appositi di tipo date/time? (magari adesso mi darai del'idiota, ma
possibile che non abbia capito bene la domanda).

Come facilità d'uso cosa mi consigliate? mongodb? SQLite?


Sono tutti facili e tutti difficili. Il mio consiglio, basato sulla mia
teoria che il miglior editor/ide/linguaggio/db/etc. e' quello con cui ti
trovi meglio) e' di provare entrambi, giocarci un poco e poi decidere.


 Dimenticavo... l'accesso al db avverrà sempre dallo stesso sw ma in due
 modi distinti, tramite la gui con richiesta dell'utente e, in automatico
 quando un utente passa la tessera con l'RFID, servirà prevedere thread
 per questo?


Dipende da quanti user contemporaneamente accedono.


 Grazie dell'aiuto (anche di domenica)


la domenica e' un giorno come gli altri se non sei un fanatico religioso. ;)


* Per un progetto (che dorme nel cassetto da anni) avevo necessita' di
tabelle che potevano avere un numero di campi variabili. Volevo pero'
evitare una tabella correlata 1 a molti per motivi di performance. Ed ero
ricorso ad una tabella a 4 campi (va beh, tra id autoincrementale e altri
accessori erano di piu' ma quelli importanti erano 4) e per la precisione

identificatore della transazione (raggruppamento)
tipologia dell'oggetto
nome dell'oggetto
valore dell'oggetto

Si tratta di una applicazione per immobiliari, il primo campo era riferito
alla proposta immobiliare, il secondo mi diceva se si trattava di prezzi,
tipologie di transazione, descrizione di accessori, etc, il terzo era il
nome dell'oggetto in se e l'ultimo il suo valore.

Con un dirty trick riuscivo ad cercare proposte immobiliari variegate
(esempio offerte in affitto di appartamenti con 3 camere, 2 bagni, posto
auto, riscaldamento autonomo, tra il 2ndo ed il 4to piano, non attici, in
una data zona e ad un prezzo massimo di x) ma era davvero una query poco
ortodossa (una sommatoria di variabili messe a 1 se caratteristica
presente).

Poi ho scoperto MongoDb e tutto e' stato rivisitato in maniera naturale.
Pero' e' un caso specifico dove la stessa proprieta' immobiliare puo'
presentare un range di caratteristiche di cui alcune comuni (prezzo,
indirizzo, tipologia), altre specifiche del tipo (un garage non avra'
ascensore o giardino) ed altre ancora magari presenti solo per quella
proposta (un appartamento con giardino pensile per dire).

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Manlio Perillo

On 16/02/2014 15:27, Carlos Catucci wrote:


2014-02-16 14:04 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com
mailto:manlio.peri...@gmail.com:

Riguardo i gusti personali, gli ORM poi non mi piacciono perchè li
reputo una astrazione sbagliata sopra il modello relazionale.


A dire il vero ultimamente mi sono trovato con diversi progetti dove il
problema era proprio il modello relazionale.


Nulla di male, ma ORM significa Object *Relational* Mapper :)

Quindi sospetto tu abbia quotato la parte sbagliata del mio messaggio.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 16:01 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:

 Nulla di male, ma ORM significa Object *Relational* Mapper :)

 Quindi sospetto tu abbia quotato la parte sbagliata del mio messaggio.


Perdonami, avevo deviato, dall'ORM in se ai modelli in generale, discorso
ripreso poi. Sebbene molti ORM supportino dei NoSql (Django almeno mi
sembra lo faccia con MongoDb)

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Enrico Bianchi

On 02/16/2014 03:41 PM, Carlos Catucci wrote:
Io sapevo (ma posso sbagliarmi) che Mongo Db (che ribadisco quanto 
detto altrove trovo MLTO carino) era pensato per grosse moli di dati. 


Dalla mia esperienza, non riesco a capire quale sia l'esatta 
collocazione di MongoDB. E questo perche`, sempre nell'ottica di fargli 
gestire grosse moli di dati, devi avere una configurazione che richiede 
almeno 9 (nove!) nodi del database NoSQL. Di contro, con PostgreSQL mi 
basta una istanza per avere prestazioni comparabili


Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 17:39 GMT+01:00 Enrico Bianchi enrico.bian...@ymail.com:

 Dalla mia esperienza, non riesco a capire quale sia l'esatta collocazione
 di MongoDB. E questo perche`, sempre nell'ottica di fargli gestire grosse
 moli di dati, devi avere una configurazione che richiede almeno 9 (nove!)
 nodi del database NoSQL. Di contro, con PostgreSQL mi basta una istanza per
 avere prestazioni com


Io trovo comoda la struttura json delle tabelle e il fatto che non abbia
tabelle rigide. Per certi progetti ovvio. Ma non sono un esperto.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Enrico Bianchi

On 02/16/2014 05:42 PM, Carlos Catucci wrote:
Io trovo comoda la struttura json delle tabelle e il fatto che non 
abbia tabelle rigide.
'Sta cosa poteva avere senso prima del 2012, ovvero prima dell'avvento 
di PostgreSQL 9.2, dove per la prima volta sono comparsi i campi JSON. 
Ad oggi, nessuno ti vieta di avere una tabella con un solo campo JSON e 
navigarla cosi`:


SELECT json-accessi FROM tabella WHERE json-uid = 1

Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 18:39 GMT+01:00 Enrico Bianchi enrico.bian...@ymail.com:

 'Sta cosa poteva avere senso prima del 2012, ovvero prima dell'avvento di
 PostgreSQL 9.2, dove per la prima volta sono comparsi i campi JSON. Ad
 oggi, nessuno ti vieta di avere una tabella con un solo campo JSON e
 navigarla cosi`:

 SELECT json-accessi FROM tabella WHERE json-uid = 1


Vero, infatti mi hanno detto che PG abbia anche prestazioni superiori. Ah,
poter avere tempo di studiare a fondo tutto.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Enrico Bianchi

On 02/16/2014 02:50 PM, Perini Matteo wrote:
Tutti i controlli verranno fatti via sw appoggiandomi ad un db (sto 
propendendo per mongodb... ma non sono ancora sicuro)


Te lo sconsiglio, non tanto per la mole dei dati (irrisoria, stiamo 
parlando di una decina di Mb all'anno), ma perche` non ti da nessun 
vantaggio evidente rispetto ad un RDBMS


Ho visto un po' di differenze tra db relazionali e documentali e penso 
che per il mio caso non faccia molta differenza quale uso. (il numero 
di campi sarà fisso)


Non e` la variabilita` dei campi a fare la differenza, ma la mappatura 
fra di loro. In un RDBMS e` fissa, in un Document Store e` variabile


Non mi è invece molto chiaro come posso immagazzinare tutte le 
date/ora degli ingressi e uscite? suggerimenti?


I RDBMS usano tipi di dati ad hoc, che ti permettono anche di eseguire 
operazioni su di loro. In alternativa, converti tutto in epoch e salvali 
in quel formato



Come facilità d'uso cosa mi consigliate? mongodb? SQLite?


Posto che facilita` d'uso in questo caso e` altamente improprio, ti 
consiglio di rimanere su PostgreSQL o su Firebird, in virtu` di come 
intendi procedere (e.g. su PostgreSQL hai piu` funzionalita`, su 
Firebird hai la manutenzione tendente allo zero)


Dimenticavo... l'accesso al db avverrà sempre dallo stesso sw ma in 
due modi distinti, tramite la gui con richiesta dell'utente e, in 
automatico quando un utente passa la tessera con l'RFID, servirà 
prevedere thread per questo? 


Secondo me devi necessariamente prevedere due applicativi distinti, uno 
in ascolto costantemente sul db (ci sono delle metodologie su PostgreSQL 
che ti permettono di farlo senza fare polling continuo), l'altro che si 
connette solo quando serve (ovvero quando apro la gui)


Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione enrico franchi
2014-02-16 12:33 GMT+00:00 Diego Barrera diegonebarr...@yahoo.it:

 On 16/02/2014 12:40, enrico franchi wrote:


 L'architettura del db deve essere *sempre* il piu' efficiente possibile.
 Se no, non ja fa. E si, sharda, cazzi e mazzi, per carita'.

  Alla luce di questo e avendo in mente che devo andare in produzione il
 prima possibile,
 (leggi per ora mi interessa poco scalare, ma mi server avere una killer
 app per vedere come va)
 che succede se opero in questo modo:

 1. creo model e tutta app con l'orm;
 2. l'app funziona e ho tanti clienti: primi problemi a scalare
 3. ottimizzo sql e impostazioni specifiche dbms

 Mi sembra un buon compromesso.


Se le cose funzionano veramente cosi', certo. Solo che nella pratica non
succede cosi'.
Succede che fra il punto 2 e il punto 3 ci sono anche le nuove features, i
bug fix, vari cazzi architetturali non previsti, tutta quella parte di
operations che non sapevi che esistesse e che ti devi inventare, cominciare
a mettere su team di risposta alle emergenze...

Quindi tipicamente quello che fai al posto del 3 e' infilare un po' di
patch, fare un po' di porcate con memcache etc etc etc.

Dalla strada arrivano notizie di tutti i tipi. C'e' twitter che riscrive
tutto in Scala da Ruby. Ci sono quelli che invece falliscono perche' un
competitor, sebbene arrivato secondo sul mercato, ci arriva con un prodotto
che funziona *anche* sotto scala e gli utenti migrano in massa. Ci sono
quelli che vanno avanti a zoppicare per anni e nessuno dice nulla.


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione enrico franchi
2014-02-16 14:27 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:


 A dire il vero ultimamente mi sono trovato con diversi progetti dove il
 problema era proprio il modello relazionale. Va detto che si tratta di un
 campione neppure lontanamente rappresentativo. Voglio dire anche se negli
 ulltmi 4 progetti 3 venivano meglio con dei NoSql (piu' naturali le
 costruzioni delle basi dati, piu' naturale usarle, aggiornarle, recuperare
 i dati rapidamente etc.) 4 progetti non bastano per dire che nel 75% dei
 casi sia cosi'. Facile che i prossimi 100 (se avro' la fortuna di lavorare
 a tanti) potrenbbero essere meglio con il relazionale.

 La tentazione di usare una struttura piu' nested come quella di MongoDb
 per fare certe cose e' sempre forte. Poi da vedere se paga o meno.


Che dire... non sapendo le specifiche e' difficile parlarne. Il fatto e'
che su molti nosql e' semplicemente piu' facile vomitare dati nella base di
dati e tirarli fuori. Tutto questo e' molto semplice (perche' quasi non ti
preoccupi del design della parte di persistenza). Poi quando le cose
cominciano a rompersi, e' un flagello. Quando cominciano a finire dentro
dati fatti troppo male e tu lo scopri qualche mese dopo, generalmente
quando hai rimosso i log che ti avrebbero detto perche', e tipicamente alle
quattro di mattina di sabato, quando ti suona il pager, e tu hai un
hangover terrificante...

Poi niente da dire, ci sono molti casi d'uso in cui il modello relazionale
non e' particolarmente indicato. Diciamo che di solito le cose semplici
spesso nascondono la complessita' da qualche altra parte.


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Carlos Catucci
2014-02-16 20:15 GMT+01:00 enrico franchi enrico.fran...@gmail.com:

 Poi niente da dire, ci sono molti casi d'uso in cui il modello relazionale
 non e' particolarmente indicato. Diciamo che di solito le cose semplici
 spesso nascondono la complessita' da qualche altra parte.


Sintesi perfetta.

C'e' da dire che come economia di scala io viaggio in ordini di grandezza
di certo abbatsanza piccoli da non dover scalare molto o spesso.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-16 Per discussione Diego Barrera

On 16/02/2014 20:10, enrico franchi wrote:


Se le cose funzionano veramente cosi', certo.

Questo gia' potrebbe bastare :D

Dalla strada arrivano notizie di tutti i tipi. C'e' twitter che 
riscrive tutto in Scala da Ruby. Ci sono quelli che invece falliscono 
perche' un competitor, sebbene arrivato secondo sul mercato, ci arriva 
con un prodotto che funziona *anche* sotto scala e gli utenti migrano 
in massa. Ci sono quelli che vanno avanti a zoppicare per anni e 
nessuno dice nulla.

Spero di essere dell'ultimo tipo ;)

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] python SQL?

2014-02-15 Per discussione Perini Matteo

Ciao a tutti,
mi trovo ad affrontare la mia prima applicazione che fa uso di database.
Quale mi consigliate?
E' da un po' che seguo questa lista e mi sembra che quasi tutti siate 
orientati verso PostgreSQL... sbaglio?
Ho anche dato un occhiata in giro per vedere che libreria usare e ne ho 
viste di molti tipi.

Psycopg1, Psycopg2, bpgsq ?

Accetto qualsiasi consiglio considerate anche che è il mio primo 
approccio ai db ma che potrei averne bisogno anche in futuro.

Grazie
Ciao
M.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Pietro Zambelli
Ciao Matteo,

On Saturday 15 Feb 2014 15:20:17 Perini Matteo wrote:
 Ciao a tutti,
 mi trovo ad affrontare la mia prima applicazione che fa uso di
 database. Quale mi consigliate?
 E' da un po' che seguo questa lista e mi sembra che quasi tutti
 siate orientati verso PostgreSQL... sbaglio?

Dipende un po' da cosa devi fare, se è sempre per l'applicazione con 
RFID, forse potresti optare anche per qualcosa non SQL tipo MongoDB:

http://api.mongodb.org/python/current/tutorial.html

Ciao

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Perini Matteo

Il 15/02/2014 15:48, Pietro Zambelli ha scritto:

Dipende un po' da cosa devi fare, se è sempre per l'applicazione con
RFID,

Si

  forse potresti optare anche per qualcosa non SQL tipo MongoDB:

http://api.mongodb.org/python/current/tutorial.html

Grazie Pietro...
mentre guardo meglio il link mi sapreste dire che differenza c'è tra un 
db SQL e un altro?

Solo il linguaggio?
Potenzialità, limiti?
Grazie
Ciao
M.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Carlos Catucci
2014-02-15 15:48 GMT+01:00 Pietro Zambelli peter.z...@gmail.com:

 Dipende un po' da cosa devi fare, se è sempre per l'applicazione con
 RFID, forse potresti optare anche per qualcosa non SQL tipo MongoDB:

 http://api.mongodb.org/python/current/tutorial.html


Ripasso quanto mi hanno detto: Postgres gestisce tabelle NoSql MEGLIO di
gran parte dei NoSql nativi. La fonte e' affidabile, io pero' ancora non ho
provato.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Francesco Stablum
Ciao Matteo,

ti consiglio di usare SQLite: http://www.sqlite.org/
http://docs.python.org/2/library/sqlite3.html

Dal tuo post non si capisce perche' SQL sia essenziale. Nel caso non lo
fosse ti consiglio questi DBMS:
* MongoDB http://www.mongodb.org/ ,
* UnQLite promette bene: http://unqlite.org/
https://pypi.python.org/pypi/unqlitepy

ciao,
-Francesco



2014-02-15 15:20 GMT+01:00 Perini Matteo perini.mat...@gmail.com:

 Ciao a tutti,
 mi trovo ad affrontare la mia prima applicazione che fa uso di database.
 Quale mi consigliate?
 E' da un po' che seguo questa lista e mi sembra che quasi tutti siate
 orientati verso PostgreSQL... sbaglio?
 Ho anche dato un occhiata in giro per vedere che libreria usare e ne ho
 viste di molti tipi.
 Psycopg1, Psycopg2, bpgsq ?

 Accetto qualsiasi consiglio considerate anche che è il mio primo
 approccio ai db ma che potrei averne bisogno anche in futuro.
 Grazie
 Ciao
 M.
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Perini Matteo

Il 15/02/2014 15:55, Francesco Stablum ha scritto:
ti consiglio di usare SQLite: http://www.sqlite.org/ 
http://docs.python.org/2/library/sqlite3.html


Dal tuo post non si capisce perche' SQL sia essenziale.
Dovete perdonarmi ma sono completamente niubbio sul tema... ho sempre 
sentito parlare dei db che ho citato sopra ma sto cominciando adesso a 
farmi un idea.
Userò, almeno all'inizio, il db solo in locale e solo da python con 
esportazione in csv (o simili).



Nel caso non lo fosse ti consiglio questi DBMS:
* MongoDB http://www.mongodb.org/ ,
* UnQLite promette bene: http://unqlite.org/ 
https://pypi.python.org/pypi/unqlitepy
Ora guardo mongodb che mi sembra, per quello che devo fare, la soluzione 
migliore...  poi arriverò con un sacco di altre domande.

Sono comunque sempre ben accetti consigli, spiegazioni, suggerimenti.
Grazie

Matteo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Enrico Bianchi

On 02/15/2014 03:54 PM, Carlos Catucci wrote:
Ripasso quanto mi hanno detto: Postgres gestisce tabelle NoSql MEGLIO 
di gran parte dei NoSql nativi.

+1
A supporto di cio`, su di un HP MicroServer N54L con dischi Sata in RAID 
10 e 2Gb di RAM ('nammerda) una tabella con un solo campo JSON 
contenente 13 milioni di record ù850Gb di file di testo, per fare un 
paragone) estrae un campo JSON indicizzato (si, puo` essere fatto senza 
problemi) in 10 secondi la prima volta e in meno di un secondo la 
seconda. Gli stessi dati su MongoDB mandavano a donnine una macchina con 
64Gb di RAM (hint: MongoDB e` memory mapped ed e` performante solo se lo 
si fa scalare in sharding)


Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Enrico Bianchi

On 02/15/2014 03:20 PM, Perini Matteo wrote:

mi trovo ad affrontare la mia prima applicazione che fa uso di database.
Quale mi consigliate? 


Dire quale database uso senza sapere cosa fa l'applicazione e` come 
dire che martello uso senza sapere cosa si deve inchiodare. Per capirci:


 - Hai piu` connessioni ai dati contemporaneamente?
 - Il database deve essere legato all'applicazione?
 - Quali operazioni sono piu` ricorrenti?

(e questo e` solo il minimo di domande che mi viene in mente)

Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Enrico Bianchi

On 02/15/2014 06:50 PM, Enrico Bianchi wrote:

ù850Gb di file di testo, per fare un paragone)

-_-

Correggiamo ed ampliamo questo typo: il file di testo e` di 50Gb, su 
PostgreSQL (9.3) viene una tabella di 19Gb, a cui devono essere aggiunti 
3Gb di dati TOAST e 400Mb di indici, il resto rimane quello che ho detto


Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Manlio Perillo

On 15/02/2014 15:20, Perini Matteo wrote:

Ciao a tutti,
mi trovo ad affrontare la mia prima applicazione che fa uso di database.
Quale mi consigliate?
E' da un po' che seguo questa lista e mi sembra che quasi tutti siate
orientati verso PostgreSQL... sbaglio?


Con PostgreSQL è raro sbagliare.
In casi speciali ci sono comunque alternative; ad esempio se non vuoi 
avere un database server separato (che deve essere gestito) c'è SQLite. 
 Ma SQLite ha anche molte limitazioni, se confrontato con un database 
serio come PostgreSQL.

Ho anche dato un occhiata in giro per vedere che libreria usare e ne ho
viste di molti tipi.
Psycopg1, Psycopg2, bpgsq ?


psycopg2, oppure sqlalchemy (ma senza l'ORM, solo sqlalchemy.sql) per 
facilitare la scrittura di alcune query, come le INSERT.




Accetto qualsiasi consiglio considerate anche che è il mio primo
approccio ai db ma che potrei averne bisogno anche in futuro.


Impara PostgreSQL (la documentazione è molto buona), così almeno quando 
ti serviranno altri database avrai un termine di paragone solido.



Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Carlos Catucci
2014-02-15 19:56 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:

 ma senza l'ORM, solo sqlalchemy.sql


Per curiosita' da ignorante, ma perche' non l'ORM? Non ti piaciono gli orm
o e' un qualcosa di SQLAllchemy in particolare che non va?

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione enrico franchi
2014-02-15 19:55 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:

 Non ti piaciono gli orm


+1


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python SQL?

2014-02-15 Per discussione Carlos Catucci
2014-02-16 1:54 GMT+01:00 enrico franchi enrico.fran...@gmail.com:

 Non ti piaciono gli orm


 +1


De gustibus non disputandum est. Io personalmente li trovo comodi. Il non
dover impazzire tra dialetti, il poter svilupppare in locale, per dire, su
Sqlite e poi andare in produzione con Postgres, cosa che mi facilita di
molto le cose (per dirne una se aggiungo dati di test alla base dati un
push sul repo condiviso (*) rende disponibile la cosa a tutti i coinvolti
nel progetto senza dover eseguire un dump da allegare e un db_restore dopo
un pull) senza impazzire sui dialetti e sulle varie differenze (sacrosante,
ciascun Db ha il suo motivo di esistere, di essere specializzato in
qualcosa, tranne forse un paio).

Poi ovvio che se devo fare una query particolarmente incasinata (e accade
SOLO se lavoro su basi dati esistenti, in caso contrario se e' roba mia
parto dal presupposto di avere sbagliato l'architettura e riprogetto di
conseguenza) posso usrae una raw, ma deve essere davvero un caso limite
dove l'ORM non ce la fa.

Lo so, mi direte che l'ORM non ottimizza come puo' fare una query scritta
ad hoc, ma a volte la flessibilita' conta piu' delle prestazioni.

Carlos
-- 
Je suis marxiste, de tendance Groucho.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python