2012-01-12 17 views
8

Questa è la prima volta che cerco di lavorare con un database, quindi abbi pazienza con me.Differenza tra database MySQL/SQLite/etc?

Ho bisogno di scrivere un programma che utilizzerà un database a cui non ho ancora accesso. So che ci sono MySQL, SQLite e un sacco di altre cose SQL, ma non sono sicuro di quale sia la differenza tra loro. Devo sapere che tipo di database è prima che io possa usarlo (cioè, è un file .db MySQL diverso da un file .db SQLite?), O il file stesso sarà lo stesso e la differenza è come è accessibile?

EDIT: sto programmando per un tablet Android, che probabilmente conta. Ma non creerò il database, mi verrà dato e devo lavorarci.

+0

Tutte le risposte finora sono davvero buone. Controllali tutti. –

risposta

8

È possibile eseguire un'esercitazione di visualizzazione creando un database MySQL e un'istanza di SQLite per vedere come funzionano e come è possibile interagire facilmente con essi.

L'accesso a ciascuno comporta adattatori, nonostante la creazione delle tabelle necessarie, l'accesso utente (nome utente/password/ruolo per accedere alla tabella).

Ecco un tutorial sqlite straight-forward: http://zetcode.com/db/sqlite/

Ecco un staight-forward dimostrativi sql: http://zetcode.com/databases/mysqlphptutorial/

Ricordo di essere sopraffatto con i database la mia prima volta. Il mio consiglio è di iniziare con qualcosa di ben supportato, con una bella comunità, e risultati di ricerca a-un sacco di tutorial, dove è possibile cogliere i fondamenti.

Quindi, in base ai requisiti dell'applicazione e ai vincoli della piattaforma, è possibile determinare dove ruotare. Ma rivedere le differenze tra i database senza aver effettivamente lavorato con loro è come provare pezzi di sushi senza mai mangiare pesce.

EDIT:

Se si sta costruendo su Android, sì, imparare SQLite.

Consiglio vivamente questo tutorial per aiutarvi a vedere SQLite utilizzato in un progetto Android: http://developer.android.com/resources/tutorials/notepad/index.html

per l'astrazione dei dati/ORM, si dovrebbe familiarizzare con fornitori di contenuti e cursori (http://developer.android.com/guide/topics/providers/content-providers.html)

Buono Interrogazione !

4

Prima di tutto, è necessario sapere che tipo di banca dati è prima di potersi connettere ad esso, come è necessario utilizzare il driver di database appropriato per la propria piattaforma. mySQL, Oracle, Postgres, SQL Server, ecc. utilizzeranno driver diversi in quanto il protocollo binario usato per comunicare con loro (autenticare e trasferire informazioni avanti e indietro) è diverso.

Per quanto riguarda il codice SQL effettivo, dipende. Per la maggior parte, puoi contare su SELECT * FROM Foo lavorando con qualsiasi database compatibile SQL sul pianeta. Tuttavia, quando inizi a fare qualcosa di più complicato o utilizza parole chiave non standard, potresti incontrare dei problemi. Ad esempio, alcuni database supportano la parola chiave USING per JOIN s e altri no.

Una cosa che potresti esaminare è una ORM.Ciò ti consentirà di astrarre il dialetto SQL effettivo dal tuo programma e quindi (per la maggior parte) non dovrai preoccuparti dell'effettivo SQL. Alcuni ORM popolari sono ActiveRecord (per Ruby on Rails) e Entity Framework per .NET. Spero che questo ti aiuti!

UPDATE:

Dal momento che il tag Android è stato appena aggiunto al post, ho fatto una rapida ricerca per ORM SqlLite che supportano Android e si avvicinò con this. Forse vale la pena controllare, o forse qualcuno può commentare se è buono :)

3

Database Abstraction Layer è la strategia di avere un intermediario intelligente in modo da poter programmare senza sapere esattamente quale sistema di database si ha sotto. L'astrazione del database non è così utopistica nella pratica come sembra, e molte persone finiscono per programmare direttamente per un determinato database. Probabilmente scoprirai che più esperienza ottieni con il tuo database di scelta, più vorresti conoscere meglio le sue sfumature particolari. Quindi la risposta breve è che c'è abbastanza differenza da importare!

Se si utilizza un software di disegno architettonico come Model-View-Controller, può consentire di fare un sacco di programmazione indipendentemente dal database utilizzato. Prendendo come esempio il Model-View-Controller, è possibile programmare i controller e le viste senza sapere quale database si sta utilizzando.

La limitazione a ciò che si può fare prima di decidere su un sistema di database è il fatto scomodo che una buona pratica di programmazione richiede modelle grasse e controllori magro. Quindi una parte importante del tuo sforzo di programmazione è tenuta in ostaggio dalla scelta di una soluzione di database.

Se io non sapevo cosa banca dati sarebbero stati utilizzati, vorrei iniziare a programmare la mia vista e poi il mio controller. Se PHP è la tua lingua, potresti trovare un tutorial su CodeIgniter illuminante.

2

Un articolo su "usi appropriati per SQLite"

http://www.sqlite.org/whentouse.html

Sommario: Lista di controllo per la scelta del motore di database

  1. sono i dati separati dall'applicazione da una rete? → scegliere client/server
  2. Molti scrittori contemporanei? → scegliere client/server
  3. Big dati? → scegliere client/server
  4. Altrimenti → scegliere SQLite!
Problemi correlati