View Full Version : [JAVA] database su filesystem
redcloud
01-10-2006, 18:41
Qualcuno potrebbe consigliarmi una libreria che funga da "db light" in locale? In pratica ho dei dati contenuti in una struttura Table che però vorrei memorizzare su disco e reperirla quando mi serve. Magari basato su XML...
Qualcuno potrebbe consigliarmi una libreria che funga da "db light" in locale? In pratica ho dei dati contenuti in una struttura Table che però vorrei memorizzare su disco e reperirla quando mi serve. Magari basato su XML...
again hsql db
redcloud
04-11-2006, 00:56
Ottimo, lo sto usando con una certa soddisfazione ma ho visto che non supporta file più grandi di 8GB. Il problema è che devo gestire tabelle di svariate centinaia di milioni di righe e se tutto il DB viene gestito in un unico file... :doh: :cry: Per caso HSQLDB supporta una sorta di frammentazione in più file (proprio per evitare il problema del limite degli 8GB)? Oppure quale altro DB mi consigli? Non mi serve un DB server, ma un DB facilmente integrabile in un'applicazione.
non ho ben capito se a 8GB arriva solo come db cached o no...
cmq fai magari una prova per vedere se veramente hai bisogno di + di 8 GB oppure come si comporta dapo 8GB
redcloud
04-11-2006, 11:18
Il capitolo 5 della guida dice...
Deployment context
The files used for storing HSQLDB database data are all in the same directory. New files are always created and deleted by the database engine. Two simple principles must be observed:
* The Java process running HSQLDB must have full privileges on the directory where the files are stored. This include create and delete privileges.
* The file system must have enough spare room both for the 'permanent' and 'temporary' files. The default maximum size of the .log file is 200MB. The .data file can grow to up to 8GB. The .backup file can be up to 50% of the .data file. The temporary file created at the time of a SHUTDOWN COMPACT can be equal in size to the .data file.
In nessun'altra parte (credo) parla di frammentazione (e io ho bisogno di spazi di 20GB per tabella...), sarebbe stato il massimo! :(
Prova con JavaDB
http://developers.sun.com/prodtech/javadb/downloads/index.jsp
nelle faq (e nei manuali) non mi pare di vedere il limite degli 8gb
http://developers.sun.com/prodtech/javadb/features/faqs.jsp#16
redcloud
04-11-2006, 13:08
Grazier per la risposta, ma...
http://developers.sun.com/prodtech/javadb/features/faqs.jsp#16
Size Limitations
Q: What is the size limit of the database?
A: Theoretically, Java DB stores each base table and each index in a single file, so the data limit size is whatever the filesize limit is on the JVM/OS on which you are running. Derby is coded against the java 64 bit interfaces to access these files, so internally should absolute table maximum size be something like 2**64. The number of tables is not limited,other than the id's for the tables are 64 bit numbers, so you can have something like 2**64 total tables.
Con NTFS e EXT3 qual è il limite della dimensione di un file?
Vorrei però che il DB fosse indipendente da questo limite del file system.
Un colpo di google mi da numeri da circo (nessun limite o 2TB per entrambi). Però se non puoi affidarti all'esistenza di questo o quel filesystem dovresti cercare il massimo comune denominatore: prendi il filesystem più "schifoso" che ti potrebbe capitare e la dimensione massima dei suoi file diventa la dimensione massima della tua applicazione.
16 megabyte per FAT12 :D
Hai considerato la possibilità di creare un tuo database, dedicato alla tua applicazione?
redcloud
04-11-2006, 13:36
Un colpo di google mi da numeri da circo (nessun limite o 2TB per entrambi). Però se non puoi affidarti all'esistenza di questo o quel filesystem dovresti cercare il massimo comune denominatore: prendi il filesystem più "schifoso" che ti potrebbe capitare e la dimensione massima dei suoi file diventa la dimensione massima della tua applicazione.
16 megabyte per FAT12 :D
Hai considerato la possibilità di creare un tuo database, dedicato alla tua applicazione?
LOL! Beh si c'ho pensato però mi porterebbe via troppo tempo! Perchè sprecare tempo per fare qualcosa che magari gia esiste e che può soddisfare pienamente i miei bisogni? Il problema è verificare l'esistenza di un DB che non dipenda dal limite della dimensione massima di un file, qualsiasi file system esso sia. Voglio la luna?
Oddio, non è che per includere un "motore di persistenza" ci voglia un'era geologica di sviluppo.
Comunque, altro giro, altra corsa.
http://www.oracle.com/database/berkeley-db/je/index.html
Qui non ho trovato indicazioni sul limite di grandezza. Nel data-sheet, che sa tanto di spottone pubblicitario, se la ride con un "scale up to hundreds of gigabytes". Sarà vero?
redcloud
04-11-2006, 14:07
Grazie, questo sembra più interessante. Anche se qusta frase mi lascia un po' perplesso
"Scalable to terabytes of data, millions of records"
Come li scala sti terabyte?
Quanti milioni di record? La mia applicazione potrebbe sfiorare il miliardo...
Grazie comunque, provo un po' a vedere come si comporta :sperem:
redcloud
04-11-2006, 16:23
D'oh! :doh: Non è SQL! :cry:
Ma MySQL e PostgreSQL devono per forza essere installati a parte? Non si possono avere "embedded" come HSQLDB?
Credo che, in quanto database server, richiedano necessariamente l'installazione del servizio. Non so si possano maneggiare per farli diventare embedded.
redcloud
05-11-2006, 10:53
Ho provato anche Mckoi che è simile ad HSQLDB ma è na mezza ciofeca. Ultima spiaggia: Apache Derby...
su quella spiaggia ti areni: hsqldb e javadb sono fork di derby. E' tutto un riciclaggio ormai.
redcloud
10-11-2006, 13:43
Infatti mi sono arenato, superato il quarto GB, il filesystem mi ha sputato in un ochio :cry: In 4GB si riempie una tabella di 23 milioni di righe x 30 colonne (ognuna con interi a 4 cifre). Mettiamo che volessi usare MySQL/Oracle senza embeddarlo, almeno supporterebbe la frammentazione o sarei limitato anche in quel caso?
questo forum gira su mysql, e penso che il db sia + di 4GB :sofico:
redcloud
10-11-2006, 23:38
Eh si però se ogni thread è una tabella, trovamene uno da 1 miliardo di post...
boh a me sembra assurdo gestire su dbms non "reali" moli di dati così complesse.
se vuoi flessibilità usa hibernate o qualche libreria java in modo da slegarti dalla sottostante tecnologia db che verrà usata.
altrimenti se proprio vuoi gestire tutto senza un vero db, l'unica è che a mano quando una tabella "pippo" arriva a una certa dimensione, crei una seconda tabella "pippo1", e poi quando la devi querare ad esempio con select ti divertirai con un botto di UNION..
ciao
Eh si però se ogni thread è una tabella, trovamene uno da 1 miliardo di post...
il vbulletin crea una tabella per ogni post?
redcloud
11-11-2006, 11:08
il vbulletin crea una tabella per ogni post?
No non saprei, era per dire!
redcloud
11-11-2006, 11:12
boh a me sembra assurdo gestire su dbms non "reali" moli di dati così complesse.
se vuoi flessibilità usa hibernate o qualche libreria java in modo da slegarti dalla sottostante tecnologia db che verrà usata.
altrimenti se proprio vuoi gestire tutto senza un vero db, l'unica è che a mano quando una tabella "pippo" arriva a una certa dimensione, crei una seconda tabella "pippo1", e poi quando la devi querare ad esempio con select ti divertirai con un botto di UNION..
ciao
che intendi per dbms non reali? E poi le moli di dati non sono complesse, si tratta di una semplice tabella con un botto di righe :)
Fare le query con UNION è una cosa che voglio evivtare, dovrebbe gestire tutto il dbms. Cavolo eppure non mi sembra una feature fantascientifica!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.