picoSQL FAQ |
Corso Italia, 178 - 56125 Pisa phone/fax +39 050 46380 e-mail picosoft@picosoft.it |
Cosè esattamente picoSQL? |
PicoSQL è un database relazionale client/server che supporta il linguaggio SQL. Le sue caratteristiche principali rispetto ai prodotti concorrenti sono la compattezza, il basso utilizzo di memoria e risorse e la semplicità di installazione e configurazione. Nonostante questo picoSQL supporta il linguaggio SQL con tutte le sue caratteristiche, gestisce alti livelli di concorrenza e le transazioni. |
Chi lo ha fatto e perché? |
Lo ha sviluppato completamente la Picosoft
di Pisa e deriva da un driver ODBC(tm) della stessa società che
permette di interrogare i file a indice prodotti da applicazioni scritte
in COBOL utilizzando strumenti di query e reportistica creati per accedere
a database relazionali, come MS-Access (tm), Excel(tm), Crystal report(tm)
ecc.
Trasformare questo driver in un DB è stato relativamente semplice, per cui l'azienda ha deciso di renderlo disponibile come Open Source. L'idea è che, se il prodotto incontra il favore della comunità, possano nascere opportunità di lavoro in termini di supporto del prodotto e personalizzazioni per coloro che intendono usarlo in ambienti di produzione. Data la sua 'leggerezza' e modularità, picoSQL può essere facilmente adattato per praticamente qualsiasi sistema, dal pocket-pc al mainframe. |
Perchè uno dovrebbe preferire PicoSql a MySQL o PostGreSql? |
PicoSQL è più facile da installare e amministrare di Postgres e gestisce le viste aggiornabili (1.2) che MySQL ancora non gestisce. Ma oltre alle sue caratteristiche tecniche, un'altro motivo per preferire PicoSQL è che, essendo stato sviluppato in Italia, rende più semplice agli italiani avere supporto, perfino sul posto se fosse necessario. Essendo un prodotto giovane, permette inoltre di partecipare al suo sviluppo anche suggerendo quali sono le priorità funzionali in base alle proprie esigenze. |
È possibile usare picoSQL in ambienti di produzione? |
Il prodotto viene già usato in produzione: lo usa per esempio il comune di Viareggio dove con picoSQL è stato realizzato il software di gestione dei comunicati stampa. Viene usato anche in questo sito per memorizzare i messaggi del forum di picoSQL |
Picosoft è disponibile a fornire qualche forma di supporto e/o assistenza a picoSQL? |
Si, Picosoft è disponibile a offrire supporto e assistenza a picoSQL e anzi al momento questo è l'unico modo che ha per poter ottenere dei fondi che giustifichino nuovi investimenti sul prodotto. |
È possibile distribuire picoSQL insieme a un programma non sviluppato con lo stesso tipo di licenza? |
La GPL, sotto cui è distribuito picoSQL, permette di usarlo senza limitazioni con applicazioni di qualsiasi tipo purché non sia ad esse linkato. La LGPL, sotto cui è distribuita la libreria picosqlnet, permette di usarla in applicazioni linkate di qualsiasi tipo. |
Il fatto che sia un "pico" db indica che le funzionalità saranno sempre ridotte a favore di una intrinseca minimalità dell'eseguibile e ad una sua maggiore efficienza? |
Il nome picoSQL deriva dal nome della azienda che lo produce, picoSoft. Le funzionalità saranno ampliate, qualcuna è già in progress, anche in base alle richieste che gli utilizzatori ci faranno pervenire sul forum del prodotto. Và comunque detto che riteniamo che molte funzionalità presenti nei DB più diffusi non siano più così importanti programmando con linguaggi a oggetti e abbiano il sicuro svantaggio di legare indissolubilmente l'applicativo al produttore del DB e a volte anche alla versione del DB. |
Ma avete fatto dei benchmark (anche interni) con mysql e postgresql? |
Di benchmark ne abbiamo fatto solo uno e con Oracle perchè con mySQL e MS-SQL non funziona. E' scritto in Java e si trova all'indirizzo http://www.picosoft.it/picosql/benchmark.html: se qualcuno riesce a farlo andare con mySQL a farci sapere il risultati, noi li pubblichiamo volentieri. Francamente valutare la velocità di un DB è molto complicato perché ci sono molte (troppe) condizioni al contorno che vanno prese in considerazione; solo per citarne alcune transazioni on/off, isolation level, livello di concorrenza, occupazione di memoria, tipo di operazioni, letture sequenziali e con indice, dimensione degli archivi e degli indici ecc. Del resto, con la potenza oggi a disposizione, secondo noi la velocità non è più così importante e quindi ci siamo preoccupati maggiormente di affidabilità e costanza di prestazioni che non di perdere tempo facendo confronti con gli altri DB. Abbiamo visto così che le prestazioni non degradano aumentando la concorrenza e la dimensione degli archivi (usando degli indici ovviamente), che l'immagine di memoria rimane sempre molto piccola (poco più di un MB, mySQL ne occupa 8 e Oracle più di 50 ma naturalmente le architetture sono diverse) e che la macchina (Linux) non viene mai messa in ginocchio. Per il momento le informazioni sono queste, poi vedremo. |
Picosql ha dei limiti sulle transazioni? Supporta piu' transazioni per connessione? |
Non ci sono limiti sulle transazioni ma ogni connessione può avere solo una transazione. |
Picosql SQL-99 complaint? |
Lo standard di riferimento per picoSQL è SQL-92. All'indirizzo http://www.picosoft.it/picosql/doc/it/sql.html è disponibile la sintassi completa SQL supportata. |
Può avere sub-query? |
Si, ma solo nella INSERT e con la clausola EXISTS. |
Posso far interagire picoSQL con OpenOffice.org 1.1 ? |
picoSQL si interfaccia a OpenOffice sia con il
driver ODBC che con il driver JDBC. C'è un problema
se si vuole anche modificare i dati (riguardante anche
il driver JDBC di ORACLE) la cui soluzione è riportata
sul sito di OpenOffice all'indirizzo
http://dba.openoffice.org/howto/IgnoreDriverPrivileges.html
Per prima cosa ogni tabella che si vuole modificare DEVE avere una CHIAVE PRIMARIA, poi bisogna eseguire la seguente macro per ciascun data source picoSQL: REM ***** BASIC ***** Option Explicit Sub Main Dim sDataSourceName as String sDataSourceName = InputBox( "Please enter the name of the data source:" ) IgnoreDriverPrivileges(sDataSourceName ) End Sub Sub IgnoreDriverPrivileges(sDataSourceName as String ) ' the data source context (ehm - the service name is historical :) Dim aContext as Object aContext = createUnoService( "com.sun.star.sdb.DatabaseContext" ) If ( Not aContext.hasByName( sDataSourceName ) ) Then MsgBox "There is no data source named " + sDataSourceName + "!" Exit Sub End If ' the data source Dim aDataSource as Object aDataSource = aContext.getByName( sDataSourceName ) ' append the new IgnoreDriverPrivilegesflag Dim bFlag as Boolean bFlag = TRUE Dim aInfo as Variant aInfo = aDataSource.Info aInfo = AddInfo( aInfo, "IgnoreDriverPrivileges", bFlag ) ' and write back aDataSource.Info = aInfo ' flush (not really necessary, but to be on the safe side :) aDataSource.flush End Sub Function AddInfo( aOldInfo() as new com.sun.star.beans.PropertyValue,sSettingsName as String, aSettingsValue as Variant ) as Variant Dim nLower as Integer Dim nUpper as Integer nLower = LBound( aOldInfo() ) nUpper = UBound( aOldInfo() ) ' look if the setting is already present Dim bNeedAdd as Boolean bNeedAdd = TRUE Dim i As Integer For i = nLower To nUpper If ( aOldInfo( i ).Name = sSettingsName ) Then aOldInfo( i ).Value = aSettingsValue bNeedAdd = FALSE End If Next i ' allocate the new array Dim nNewSize as Integer nNewSize = ( nUpper - nLower ) If bNeedAdd Then nNewSize = nNewSize + 1 Dim aNewInfo( nNewSize ) as new com.sun.star.beans.PropertyValue ' copy the elements (a simply copy does not work in Basic) For i = nLower To nUpper aNewInfo( i ) = aOldInfo( i ) Next i ' append the new setting, if necessary If ( bNeedAdd ) Then aNewInfo( nUpper + 1 ).Name = sSettingsName aNewInfo( nUpper + 1 ).Value = aSettingsValue End If AddInfo = aNewInfo() End Function Abbiamo provato sia con i driver JDBC che ODBC e funziona in entrambi i casi. |