2012-01-12 20 views
8

Esta es la primera vez que trato de trabajar con una base de datos, así que tengan paciencia conmigo.Diferencia entre las bases de datos MySQL/SQLite/etc?

Necesito escribir un programa que utilizará una base de datos a la que todavía no tengo acceso. Sé que hay MySQL, SQLite y un montón de otras cosas SQL, pero no estoy seguro de cuál es la diferencia entre ellos. ¿Debo saber qué tipo de base de datos es antes de que pueda usarlo (es decir, si un archivo .db de MySQL es diferente de un archivo .db de SQLite?), O el archivo en sí será el mismo y la diferencia es cómo se accede?

EDITAR: Estoy programando para una tableta Android, eso probablemente importa. Pero no crearé la base de datos, me la entregarán y tendré que trabajar con ella.

+0

Todas las respuestas hasta ahora son realmente buenas. Échales un vistazo a todos. –

Respuesta

8

Es posible que desee ejecutar a través de una vista tutoriales creando una base de datos MySQL y una instancia de SQLite para ver cómo funcionan y cómo puede interactuar fácilmente con ellos.

El acceso a cada uno implica adaptadores, a pesar de crear las tablas que necesitará, el acceso del usuario (nombre de usuario/contraseña/función para acceder a la tabla).

Aquí hay un tutorial sqlite recta de avance: http://zetcode.com/db/sqlite/

Aquí hay un tutorial de SQL staight-forward: http://zetcode.com/databases/mysqlphptutorial/

Recuerdo ser abrumado con bases de datos la primera vez. Mi consejo es comenzar con algo bien respaldado, con una buena comunidad y resultados de búsqueda un montón de tutoriales, , donde puede comprender los fundamentos.

Luego, en función de los requisitos de su aplicación y las limitaciones de la plataforma, puede determinar dónde pivotar. Pero revisar las diferencias entre las bases de datos sin haber trabajado realmente con ellas es como probar trozos de sushi sin comer pescado.

EDIT:

Si usted está construyendo en Android, sí, aprender SQLite.

le recomiendo este tutorial para ayudarle a ver SQLite utilizado en un proyecto Android: http://developer.android.com/resources/tutorials/notepad/index.html

Para la abstracción de datos/ORM, usted debe familiarizarse con los proveedores de contenido y cursores (http://developer.android.com/guide/topics/providers/content-providers.html)

Buena Consulta de !

4

En primer lugar, deberá saber qué tipo de base de datos es antes de poder conectarse, ya que deberá usar el controlador de base de datos adecuado para su plataforma. mySQL, Oracle, Postgres, SQL Server, etc. usarán diferentes controladores ya que el protocolo binario utilizado para hablar con ellos (autenticar y transferir información hacia adelante y hacia atrás) es diferente.

En cuanto a su código SQL real, depende. En su mayor parte, puede contar con SELECT * FROM Foo trabajando con cualquier base de datos compatible con SQL en el planeta. Sin embargo, una vez que empiezas a hacer algo más complicado o usando palabras clave no estándar, es posible que tengas problemas. Por ejemplo, algunas bases de datos admiten la palabra clave USING para JOIN sy otras no.

Una cosa que podría considerar es un ORM.Esto le permitirá abstraer el dialecto SQL real de su programa y luego (en su mayor parte) no tener que preocuparse por el SQL real. Algunos ORM populares son ActiveRecord (para Ruby on Rails) y Entity Framework para .NET. ¡Espero que esto ayude!

ACTUALIZACIÓN:

Desde la etiqueta Android se agregó a la entrada, hice una búsqueda rápida de ORM SqlLite que soportan Android y se acercó con this. Tal vez valga la pena registrarse, o quizás alguien pueda comentar si es bueno :)

3

Capa de abstracción de la base de datos es la estrategia de tener un intermediario inteligente para que pueda programar sin saber exactamente qué sistema de base de datos tiene debajo. La abstracción de la base de datos no es tan utópica en la práctica como suena, y la mayoría de la gente termina programando directamente para una base de datos en particular. Es probable que descubras que mientras más experiencia obtengas con tu base de datos de elección, más desearás conocer mejor sus matices particulares. ¡Entonces la respuesta corta es que hay suficiente diferencia para importar!

Si utiliza un patrón arquitectónico de software como Model-View-Controller, puede permitirle realizar gran parte de su programación, independientemente de la base de datos que utilice. Tomando Model-View-Controller como ejemplo, puede programar sus Controladores y sus Vistas sin saber qué base de datos está usando.

La limitación de lo que puede hacer antes de decidirse por un sistema de base de datos es el hecho inconveniente de que una buena práctica de programación requiere Modelos gordos y Controladores delgados. Entonces, gran parte de su esfuerzo de programación se mantiene como rehén al elegir una solución de base de datos.

Si no supiera qué base de datos se usaría, comenzaría a programar mi Vista y luego mi Controlador. Si PHP es su idioma, puede encontrar un tutorial de CodeIgniter esclarecedor.

2

Un artículo sobre "Usos apropiado para SQLite"

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

Resumen: Lista de verificación para elegir el derecho Motor de base

  1. son los datos separados de la aplicación por una red? → elegir cliente/servidor
  2. ¿Cuántos escritores concurrentes? → elija cliente/servidor
  3. Big data? → elija cliente/servidor
  4. En caso contrario → ¡elija SQLite!
Cuestiones relacionadas