2012-02-04 37 views
7

Estoy diseñando un nuevo proyecto web y, después de estudiar algunas opciones con el objetivo escalabilidad, que llegó con dos soluciones de bases de datos:SQLite local vs MongoDB remoto

  • archivos SQLite locales cuidadosamente diseñados para una forma escalable (uno nuevo archivo de base de datos para cada X usuarios, ya que las escrituras dependerán del contenido del usuario, sin dependencia de datos entre usuarios);
  • servidor MongoDB remoto (como Mongolab), como mi servidor host no sirve MongoDB.

No confío en el servidor MySQL en el host compartido actual, ya que aparece con mucha frecuencia (y tuve problemas con MySQL en otro host, también). Por la misma razón, no voy a usar postgres.

Pros de SQLite:

  • Es local, por lo que debe ser más rápido (Voy a cuidar de utilizar el índice y las transacciones adecuadamente);
  • No necesito que preocuparse de TCP olfateando, como protocolo de conexión Mongo is not crypted;
  • No necesito preocuparme por la interrupción del servidor, ya que SQLite no tiene servidor.

Pros de MongoDB:

  • Es más fácilmente escalable;
  • No tengo que preocuparme por dividir las bases de datos, ya que la escalabilidad parece natural;
  • No necesito que preocuparse por los cambios de esquema, como Mongo es sin esquema y SQLite doesn't fully support alter table (especialmente teniendo en cuenta el cambio de muchos archivos de producción, etc.).

Quiero ayuda para tomar una decisión (y tal vez considerar una tercera opción). ¿Cuál es mejor cuando las operaciones de escritura y lectura están creciendo?

Voy a usar Ruby.

+0

MongoDB está optimizado para operaciones de escritura – Adrian

+0

@Adrian: eso es absolutamente una exageración :-) –

Respuesta

9

Un riesgo importante del enfoque SQLite es que a medida que sus necesidades a escala aumentan, usted no será capaz de (fácilmente) desplegar en múltiples servidores de aplicaciones. Es posible que pueda dividir a los usuarios en servidores separados, pero si ese servidor bajara, tendría un subconjunto de usuarios que no podrían acceder a sus datos.

El uso de MongoDB (o cualquier otro servicio centralizado) alivia este problema, ya que sus servidores web son apátridas; pueden agregarse o eliminarse en cualquier momento para adaptarse a la carga web sin tener que preocuparse de qué datos existen.