View Single Post
Old 29-03-2007, 22:32   #1
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ .websNOSPAM@gmail.com
Messaggi: 1843
Database di testo [Thread ufficiale]

Database di Testo


Ogni spazio web ha determinate "leggi" riguardo l'utilizzo dei database più utilizzati come SQL

Questi limiti di utilizzo riguardano spesso lo spazio disponibile,il numero di query da effettuare ecc...

Tutti questi limiti possono portare spesso a trovare un'alternativa valida, ed è quella che oggi viene chiamata come "Database di testo" o chiamata anche come "Database FlatFile flat file", o meglio essi possono assumere le stesse caratteristiche di un qualsiasi altro database su web, quindi creare tabelle, inserire record, modificare eliminare e cosi via, ma salvando i dati anzichè in determinate partizioni del server dedicate, direttamente sulle nostre directory in semplici formati file.


Dobbiamo solo scegliere quale database di testo utilizzare, e attualmente esiste una quantità di scelta consistente, vediamo quali


-------------------------------------------


Database Txtsql


Quote:
txtSQL (pronounced "text-sequel") is a class containing a variety of functions designed to mimic a database system, using only regular text files.

Running on the PHP language, it is object-oriented and can be looked at as sort of a framework in creating larger scripts (such as guestbooks, polls, forums etc.)

There are two levels of access; a low-level implementation that works on just function calls and the other relies on the support of SQL (a parser/lexer is currently being developed). As far as I know, txtSQL is VERY efficient in how it handles its data and the way in which it is handled has also almost never caused any major concerns (data loss is rare).

txtSQL does not require any outside plugins to operate, it's in the ballpark of "plug and play" (with a few exceptions of course). But most importantly, txtSQL is an opensource project (listed under Sourceforge), licensed under the GNU, which means that it's totally free of charge and will remain as such forever.
In txtsql è possibile eseguire tutte le seguenti azioni, descritte qui:


Guida 1
Guida 2


Txtsql pare essere proprio una buona alternativa a mysql e a tutti i database sql che oggi esistono.

Txtsql mantiene le stesse funzioni di mysql riguardo la lettura e scrittura, poi comunque è possibile vederlo sulla documentazione del sito ufficiale.

Inoltre non è difficile da usare per chi conosce il significato di gestire un database e ha già provato pannelli grafici per la gestione di mysql come il noto phpmyadmin, perchè txtsql ha un' interfaccia grafica molto più avanzata.

Attualmente sono presenti migliaglia di siti web che mantengono questo database come base.

Riguardo i script scritti per questo database e prodotti ufficialmente ci sono già due progetti in proposito siteman e txtmailbox.

Intendo comunque precisare che utilizzare txtsql non comporta nessun tipo di svantaggio ma in molti casi l'inverso, anche se comunque sulla versione 4.0 ci saranno funzionalità ancora più avanzate per esportare i dati scritti in istruzioni sql, cosi che si possa passare rapidamente tutti i dati da txtsql a un database sql e poi magari esportarli anche in programmi adatti come access ec...

Riguardo la velocità di query non possiamo dire di certo che sia un cattivo concorrente, secondo alcuni test effettuati da myupb.com pare che superi di molto tutti i risultati di query ottenuti da altri database di testo come lo stesso textdb di myupb.com, e addirittura sembra che si avvicini di molto alle stesse qualità di velocità di scrittura e lettura di mysql, certo anche se comunque si tiene a precisare che tutto dipende poi dalle condizioni del server.

Il sito ufficiale è http://www.txtsql.dotgeek.org/site/ e l'ultima versione stabile è la 2.2 anche se sono state già date le basi per la prossima 4.0.

Consiglio di utilizzarlo


Qui ci sono ulteriori informazioni wikipedia.org

Download:
sourceforce.net

Immagini di come funziona txtsql (simile al pannello di phpmyadmin di mysql)

http://static.flickr.com/99/316462238_953bdbecb5_o.png
http://static.flickr.com/99/316462239_d6ce82b88a_o.png
http://static.flickr.com/101/316462241_2331a9e694_o.png
http://static.flickr.com/110/316462242_47f08e058c_o.png
http://static.flickr.com/113/316462243_b0384a106f_o.png
http://static.flickr.com/122/316462244_858d63dabc_o.png

Partecipate pure a questa discussione se volete conoscerlo meglio o se siete utenti attuali di questo ottimo database oppure se siete esperti programmatori che vogliono migliorarlo per pubblicare eventuali modifiche

Esempio di qeury in txtsql:

Codice PHP:
<?php
$data 
$sql->select(array(
    
'db'      => 'testDB',
    
'table'   => 'testTable',
    
'where'   => array('strtolower(somecolumn) = value'),
    
'limit'   => array(1019),
    
'orderby' => array('id''ASC')
    ));

foreach ( 
$data as $key => $row )
{
    print 
'Row '.$key.': '.print_r($row,1)."<br>\n";
}
?>
Sito ufficiale http://txtsql.sourceforge.net/site/
Autore:Faraz ALI
Versione attuale 2.2 Final
Prossima versione 4.0

------------------------------------------

Database Gladius DB


Gladius DB

Quote:
Gladius DB is a fast and efficient PHP flatfile database engine written in pure PHP; its SQL syntax is compatible with a subset of intermediate SQL92. You will not need any specific extension to have it work, and it is bundled with an adoDB lite driver.
Glagius DB ha la capacità di interpretare in linguaggio SQL tutto ciò che gli viene fornito come input, inoltre rispetta tutti gli standard dell' SQL92, è stabile, ed è già utilizzato da circa 7 mesi nel progetto Drake CMS, di bug ce ne sono stati davvero pochi, inoltre il creatore è italiano ed è disponibile presso exbb.clans.it.

Qualche esempio di query:

Codice PHP:
<?php
            
// include the database engine PHP code
            
include 'gladius/gladius.php';
            
            
// creates the Gladius instance
            
$G = new Gladius();

            
// select the existing database
            
$G->SelectDB('full_path_to_db/database_name/') or die($G->errstr);
            
            
// execute the SQL statement
            
$rs $G->Query('SELECT * FROM mytable');
            
            
// retrieve the array of rows
            
$data $rs->GetArray();
            
            
// print the raw arrays
            
print_r($data);
?>

Sito ufficiale http://gladius.sourceforge.net/docs/
Autore:Legolas558
Versione attuale 0.6 (stabile)
Prossima versione 0.7

Ne consiglio l'uso, è davvero un ottimo database ed è continuamente aggiornato.

-------------------------------

Database Textdb

Quote:
UPB is based on a test database system designed by Pilot. Below are some resources for developing with TextDB:

The idea of this version is to offer a quicker and more complex way of dealing with the files this version of textdb uses the extension tdb for all its database files.
Textdb nasce su myupb.com da Upb Forum, uno script per la creazione di gruppi di discussione in php senza necessità di database sql, e prende poi la singola forma di database di testo, che ora è stato comunque reintegrato nella versione 2.0 di Upb Forum.

Anche Textdb riesce ad interpretare il linguaggio sql, ecco un esempio di inserimento record in una tabella con nome "info":

Codice PHP:
$db->add("info", array("fullname" => "John Smith""phoneNum" => "5551234",
"interests" => "I like long walks on the beach and hanging with my girlfriend suzy")); 
Sito ufficiale http://www.myupb.com/wiki/index.php/TextDB
Autore:community of Myupb
Versione attuale 5.1 (stabile)
Prossima versione 5.2

utilizzati come SQL.

Questi limiti di utilizzo riguardano spesso lo spazio disponibile,il numero di query da effettuare ecc...

Tutti questi limiti possono portare spesso a trovare un'alternativa valida, ed è quella che oggi viene chiamata come "Database di testo", o meglio essi possono assumere le stesse caratteristiche di un qualsiasi altro database su web, quindi creare tabelle, inserire record, modificare eliminare e cosi via.

Dobbiamo solo scegliere quale database di testo utilizzare, e attualmente esiste una quantità di scelta consistente.


---------------------------------------------

Database SqLite

Quote:
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Features include:

* Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
* Zero-configuration - no setup or administration needed.
* Implements most of SQL92. (Features not supported)
* A complete database is stored in a single disk file.
* Database files can be freely shared between machines with different byte orders.
* Supports databases up to 2 tebibytes (241 bytes) in size.
* Strings and BLOBs up to 2 gibibytes (231 bytes) in size.
* Small code footprint: less than 250KiB fully configured or less than 150KiB with optional features omitted.
* Faster than popular client/server database engines for most common operations.
* Simple, easy to use API.
* TCL bindings included. Bindings for many other languages available separately.
* Well-commented source code with over 95% test coverage.
* Self-contained: no external dependencies.
* Sources are in the public domain. Use for any purpose.
SqLite riesce quindi ad intepretare il linguaggio sql.

Per utilizzare questo database è necessario che venga installato sul server con i permessi di amministratore.

Sito ufficiale http://www.sqlite.org/
Autore:community of SqLite
Versione attuale 3.3.13 (stabile)
Prossima versione 3.3.14


-----------------------------------------------


Esempio di database di testo

Qualche esempio scritto rapidamente

File.dat (Contiene i records)
Quote:
marco</>marco@marco.it</>www.marco.it</>523
luca</>luca@luca.it</>www.luca.it</>652
andrea</>andrea@andrea.it</i>www.andrea.it</i>689
File.def (Contiene le definizioni dei records)
Quote:
Username</>e-mail</>website</>topic
Database.php (Elaborazione dati)
Codice PHP:
$record file("file.def");
$record2 file("file.dat");
foreach (
$record2 as $riga)
  {
  
$nomeCampi explode("</>"$record[0]);
  
$campo explode("</>"$riga);
  if (
$campo[0] == "nome2")
    {
//echo "$campo[0]<br>";
echo "$campo[1] (dato di luca)";
}

Quote:
$campo[0]
$campo[1]
$campo[2]
$campo[3]
E cosi su $campo[1] otteniamo l'e-mail di luca, se avessi stampato anche $campo[0] cosi da sapere anche il nome potevo creare un collegamento mailto del tipo:

Codice PHP:
echo "<a href='mailto:$campo[1]'>$campo[0]</a>"
------------------------------------------------------


Buon utilizzo e votate

Esporta/Importa dati

Ricordo inoltre che come per mysql anche nei database di testo è possibile esportare i dati facilmente su Microsoft Access o Openoffice sbase effettuando query complete a tabelle ed esportandole prima in un foglio di calcolo e poi esportandole in formato db.

Riguardo invece all'importa da access all'esterno, attualmente consiglio di salvare in formato xml ed effettuare alcuni replace sul testo da inserire come linguaggio su database




importa esporta dati:metodo completo e verificato

Guida valida soprattutto per gladius db utilizzando il linguaggio sql92, ma anche per altri db appena citati
- x importare

per esportare creare export.php e fare il select * from table di tutti i dati della tabella
creare quindi una tabella in html o in txt(se molto grande) con <table><tr> e <td>
copiare e incollare su excel, oppure se in txt gestire tramite i replace di notepad2
da microsoft excel si salva in formato .xls
a questo punto per altri database di testo (anche quelli creati da noi in casa) va assolutamente seguita la regola di rimpiazzare i tag di xml con i tag utilizzati dal vostro database per fare l'insert dei dati, il resto della guida è solo per gladius db
da microsoft access si importa da .xls e si salva in .txt (senza text qualifier,e in semicolon e con un include field name on first row)

poi dunque si apre un programma che gestisce i database, per esempio sqlite expert professional a pagamento oppure sqlite manager per firefox gratuito.

da li si importa il .txt (semicolon,new table:table,auto-detect field types)
si da un aggiustata alle proprietà della tabella e in caso fosse necessario ai dati.
dopodichè si fa un esporta in sql, ovviamente anche esso rivisto con un notepade facendo se necessario dei replace di apici,virgole o cose varie.

- x esportare

ed infine questo codice sql è pronto per essere importato su qualsiasi database esso sia


questo è il metodo più completo
ce ne sono altri più veloci ma sono meno professionali e possono dare errori imprevisti


POST
Attualmente utilizzo sia Txtsql che Gladius Db, entrambi sono ottimi, anche se ho trovato migliore Gladius Db come supporto e come frequenza di aggiornamenti.

Mentre Textdb lo sto utilizzando in alcuni progetti ancora offline, è abbastanza flessibile, anche se ancora ci sono alcuni bug da risolvere.

Ultima modifica di kevindavidmitnick : 11-02-2009 alle 00:06.
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso