Si estuviera desarrollando un sitio web basado en una base de datos con contenido pesado enviado por el usuario (principalmente texto, algunas imágenes), ¿qué lenguaje (s) de programación y base de datos usaría? ¿Por qué?

En términos de un idioma, diría que usa lo que sabes. PHP, Python, Ruby, et al son todos lenguajes dignos que probablemente estarán bien. Sin embargo, la base de datos será su cuello de botella en todo el proceso. Las bases de datos relacionales por sí mismas no tienen nada en ninguna de las soluciones NoSQL. Sin embargo, en la compensación del rendimiento, puede perder un poco de consistencia ya que la mayoría de las bases de datos NoSQL se consideran “eventualmente consistentes”. También prácticamente pierde la garantía de que la base de datos es compatible con ACID cuando se utiliza NoSQL. Sin embargo, esto depende de la base de datos que elija, algunas pueden ser un poco mejores que otras. Pero a menos que esté pensando en crear una base de datos bancaria que sea muy estricta con las transacciones, entonces no tiene nada de qué preocuparse. Sin embargo, abandonar estos aspectos es lo que hace que la base de datos NoSQL sea más rápida (y el hecho de que almacenan casi todo en la memoria frente al disco).

Yo personalmente sugeriría ir con MongoDB ya que no solo es mucho más rápido que cualquier otro RDBMS, sino que le permite estructurar las cosas en “documentos”. Por lo tanto, si lo diseña correctamente, esencialmente podría tener una estructura similar a una tabla para mantener las cosas relacionales y al mismo tiempo obtener el rendimiento que ofrece MongoDB.

El idioma es irrelevante, ya que no es el idioma que usa tanto como la forma en que lo usa.

Elija su idioma y base de datos de acuerdo con lo siguiente:

  1. ¿Cuál es su dominio de conocimiento actual?
    PHP? ASP.Net? ¿Pitón?
    Elige algo que ya sabes.
    En cualquier caso, no es el idioma que eliges, es el marco.
    Si conoce Python, elija Django.
    Si conoces PHP, ve con Cake o Zend.
  2. ¿Qué capacidad crees que lograrás?
    NoSQL es bueno, pero puede limitar sus habilidades a la hora de unir datos y aprovechar la lógica de su base de datos.
    Muchos sitios web de alta escala se ejecutan en MySQL, que ha demostrado escalar muy alto.
    Si llega a un punto donde ya no se escala, entonces también está en el punto donde tendrá que reescribir mucho de todos modos.
    Si compila su aplicación correctamente, el cambio de bases de datos solo debe tocar una, quizás dos, capas de su sistema, nada más.
    Constrúyalo correctamente y no tendrá problemas para cambiar a NoSQL en el futuro y quién sabe, tal vez, nunca lo necesitará y podrá disfrutar de Uniones, Modularidad y una base de datos bien probada que se puede mantener fácilmente y tiene un gran grupo de DBA experimentados para ayudarlo cuando sea necesario.
  3. El último se conecta con lo que dije sobre los DBA.
    Siempre recuerde que si tiene un lenguaje o base de datos que es más raro, tendrá más dificultades para reclutar nuevos desarrolladores y nuevos DBA, y mucho menos uno experimentado. Y debido a la oferta y la demanda, las buenas serán mucho más caras que si elige un lenguaje / DB más común.

Para el contenido enviado por el usuario, puede ser beneficioso tener una base de datos NoSQL como mongodb como Denny sugirió (aunque, idealmente, sus requisitos de base de datos deben definir qué base de datos elige. NoSQL es bueno cuando necesita escalabilidad horizontal y, por lo tanto, se adapta al contenido generado por el usuario que no puede encajar en columnas predefinidas si se proporciona suficiente libertad a los usuarios). La escalabilidad que ofrece esta base de datos es una locura y las bases de datos SQL ni siquiera se acercan. MongoDB tiene un buen soporte de la comunidad, es muy rápido y eficiente, escalable, tiene un soporte incorporado para fragmentación y mapeo / reducción y, por lo tanto, debería ser una buena opción.
En cuanto al idioma, debe elegir uno con el que se sienta cómodo. Si está planeando aprender un nuevo idioma, le sugiero que use PHP o Python. Ambos son muy fáciles de aprender. Python aún más debido a la sintaxis muy simple. Puede elegir un marco como Django para python o Symphony para PHP.