2010-05-01 19 views
8

Si hay un mejor lugar para preguntar esto, por favor hágamelo saber. .¿Los sitios web necesitan bases de datos locales más?

Cada vez que voy a construir un nuevo sitio web/blog/carro de la compra/etc, sigo tratando de hacer los siguientes:

  • Extracto cabo funcionalidad común en código reutilizable (plugins rubygems y jQuery su mayoría)
  • Si es posible, convertir esa joya en un pequeño servicio de modo que nunca tenga que hacer frente a una base de datos para los objetos involucrados (por el servicio, me refiero a algo ligero y robusto, generalmente construido con la Sinatra Web Framework con unos pocos modelos básicos).

Mi suposición es, si puedo eliminar las dependencias en las bases de datos locales, que hará que sea más fácil y más escalable en el largo plazo (escalable en términos de capacidad de reutilización y capacidad de gestión, no necesariamente la base de datos/rendimiento). No estoy seguro de si eso es una suposición bueno o malo todavía. ¿Qué piensas?

He hecho esta hipótesis debido a la siguiente razón:

funcionalidad más grave de base de datos/modelo ha sido construido en el Internet en alguna parte.

Sólo para nombrar unos pocos:

  • Red Social API: Facebook
  • API de mensajería: Twitter
  • API de correo: Google
  • API
  • Evento: Eventbrite
  • Compras API: Shopify
  • comentario API: Disqus
  • Forma API: Wufoo
  • API de imagen: Picasa
  • API de vídeo: Youtube ...

Cada una de esas cosas son bastante complicados de construir desde cero y hacer tan optimizado, simple, y fácil de usar ya que esas compañías los han fabricado.

Así que si construyo una aplicación que muestre imágenes (picasa) en una página de eventos (eventbrite), y pueda ver quién se unió al evento (eventos de Facebook) y envíeles correos electrónicos (aplicaciones de google api) y tenerlos llenar encuestas mensuales (Wufoo), y ver un video y cuando estén listas (youtube), todo ello integrado en una costumbre, fácil de usar sitio web, y yo puedo hacer eso sin tener que crear una base de datos local, es que una buena cosa?

Lo pregunto porque hay dos cosas que faltan en el rompecabezas que me mantienen obligando a crear esa base de datos local:

  • mensaje API
  • REST/API Bastante Url

Si bien hay un montón de Para ellos, sistemas de blogs y API, no hay un solo lugar donde simplemente puedas escribir contenido y hacerlo parte de algo masivo. Para cada aplicación, tengo que usar el código para crear URL bonitas/tranquilas, y eso guarda las publicaciones. ¡Pero parece que debería ser un servicio!

La pregunta es, ¿es eso lo que el sitio web es? ... Ese lugar para integrar los servicios de mundos para mi causa específica ... y, suspiro, para almacenar publicaciones que solo mi sitio tiene acceso a. ¿Todos necesitarán siempre "su propio blog"? ¿Por qué no tener un perfil y escribir mucho contenido en una plataforma establecida como StackOverflow o Facebook?

... De esta forma puedo escribir aplicaciones completamente sin una base de datos y saber que lo estoy haciendo bien.

Nota: Por supuesto, en algún momento necesitaría una base de datos, si estuviera haciendo algo único o nuevo. Pero para el caso en el que solo estás volviendo a cablear información o creando cosas como videos, eventos y productos, ¿es realmente necesario?

+0

No tengo experiencia con él, pero doesd no couchdb (http://couchdb.apache.org/) llenar ese nicho de REST? –

+0

Es cortés con la memoria caché. Si lo descarga a una nube, esa sigue siendo técnicamente * su * base de datos. – cbednarski

Respuesta

3

creo que haya respondido más o menos a su propia pregunta en la pregunta:

  • Si usted puede encontrar un servicio basado en la web de terceros que cumple con los requisitos de su sitio web para la persistencia, entonces su sitio web no lo hace necesita una base de datos local.

  • Si no puede, entonces lo hace.

Pero los problemas de "requisitos" son algo más que simplemente los técnicos. Suponiendo que identifique un servicio de base de datos/persistencia remoto, hay muchas razones por las que podría no ser adecuado:

  • puede que no proporcionen la funcionalidad detallada su sitio cliente requiere; p.ej. capacidad de hacer ciertos tipos de consultas, escalabilidad, etc.
  • Puede ser demasiado costoso de usar dada la tasa de visitas proyectadas del sitio de su cliente.
  • Podría ser demasiado arriesgado en términos de:
    • usuario final privacidad,
    • servicio de disponibilidad/fiabilidad,
    • viabilidad a largo plazo del servicio y
    • estabilidad a largo plazo del servicio de APIs

Esto no quiere decir que estas preocupaciones no pueden ser abordados. Pero al menos los problemas de "riesgo" deben discutirse con sus clientes, ya que en última instancia tendrán que tratar con ellos si las cosas van mal.

Sin embargo, cuando todo está dicho y hecho, la gran ventaja de una base de datos local sobre una remota es que usted y su cliente tienen control total sobre una base de datos local.

0

Creo que probablemente depende de la información que intenta almacenar/recuperar. Mucha de la información que mencionas parece hacer uso de openid o proveedores similares. ¿No puedes crear un 'módulo' abierto o alternativo, al que solo te refieres/incluye (de forma remota si es necesario) cuando lo necesites?

Mucho de esto se ve un poco más allá de mí, pero estoy tratando de construir una base de datos de usuarios, y pensé que así era como lo lograría de una manera que también podría reutilizar el código en una variedad de contextos .

Afortunadamente, esto activará esos procesos de pensamiento para usted.

Cuestiones relacionadas