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.


SourceForge.net Logo

Last update: 2002-11-16