¿Cuál es una buena base de datos para usar en una aplicación iOS de reserva de viajes?

En primer lugar, me gustaría agradecerle por tomarse el tiempo para leer esta publicación. Estoy tratando de encontrar las preguntas correctas para hacer, así que he dividido mi confusión en preguntas descriptivas más pequeñas. Aprecio mucho a cualquiera que pueda arrojar algo de luz sobre este asunto

Fondo:

He estado trabajando para una gran empresa de software durante los últimos años usando C # como el lenguaje del cliente y el servidor y SQL Server como la base de datos para almacenar todos los datos transaccionales del cliente. En este modelo, el código del cliente agrega funcionalidad para la interfaz de usuario del software, como botones, vistas y paneles de la interfaz de usuario, clasificación, etc. En otras palabras, toda la funcionalidad para la lógica frontal mientras que el código del servidor maneja la lógica del servidor, como cálculos, importación / exportación de archivos, interfaces y se conecta a la base de datos de SQL Server para consultar, leer y escribir datos en la base de datos: SQL Server.

Ahora estoy buscando construir una plataforma móvil iOS para compartir el viaje, pero elegir una base de datos se volvió mucho más confuso de lo que había imaginado.

Las características incluyen

  • Regístrese usando Gmail y guarde los datos del usuario en mi base de datos
  • Guardar la entrada de viaje del usuario (nombre de usuario / ID de viaje / origen / destino / hora / ETC) en la base de datos
  • Emparejar usuarios que comparten los mismos criterios de viaje en función de su entrada de viaje en la base de datos
  • Dar a los usuarios la capacidad de enviarse mensajes / clasificarse entre sí y guardar el historial de clasificación / mensajes en la base de datos por usuario
  • Conéctese a la API de Google Map y muestre las ubicaciones de los usuarios; no estoy seguro de si esto se maneja en los servidores de Google o si necesito guardar algo en la base de datos
  • Guardar perfil de usuario e información de pago en la base de datos

En mi opinión, el mismo modelo Cliente> Servidor> Base de datos debería funcionar, pero me han dicho lo contrario. Intentaré dividir mi pregunta en partes e intentaré darle sentido a todo esto.

El problema:

Los desarrolladores móviles me han dicho que busque FireBase o Amazon Web Service (AWS) en lugar de SQL Server.

He investigado un poco al respecto y parece que FireBase es una base de datos basada en un árbol JSON en lugar de una base de datos relacional como SQL Server. También es un BaaS en lugar de solo una base de datos.

Pregunta 1:

R: ¿Cuál es el pro / con para usar la base de datos de árbol JSON sobre bases de datos relacionales tradicionales como SQL Server? Los árboles JSON parecían bastante confusos para mantener a primera vista, mientras que si estructuraba mis requisitos con tablas en una base de datos relacional, es muy intuitivo para mí mantener y consultar datos.

B: ¿Cuál es la diferencia entre BaaS y SQL Server? Tal vez estoy confundido, pero ¿no tienes que escribir el código del servidor para leer / escribir en la base de datos?

También me han dicho que C # como lenguaje de servidor es una mala idea, en cambio use PHP y MYSQL.

Preguntas 2:

A: ¿Por qué C # es una mala idea? Si las grandes empresas usan este modelo para miles de usuarios con incluso más transacciones diarias, me imagino que el rendimiento y la escalabilidad no deberían ser un problema. ¿Cuál es la ventaja de PHP en lugar de C # como lenguaje de servidor y MYSQL sobre solo SQL Server?

B: Sigo escuchando la palabra de moda “Persistencia de datos”. ¿Qué significa esto realmente y cómo me afectará? Si al final del día solo quiero que los usuarios reserven viajes a mi base de datos y filtren los datos para otros usuarios que buscan viajes similares, ¿necesitaría incluso “Persistencia de datos”?

De todos modos, lo siento por la publicación larga y confusa, ya que el objetivo de mis preguntas es realmente encontrar una solución de base de datos que se ajuste a la plataforma que estoy tratando de desarrollar. Espero haber dado suficientes detalles y dividido mis preguntas en claras descriptivas. ¡Gracias de antemano!

Jack X – Asumo que fuiste tú quien publicó esta pregunta.

Desearía usar Firebase si desea una función en tiempo real (socket) en su aplicación. SIN EMBARGO, una advertencia justa , tendrá un esfuerzo de trabajo adicional para tener una funcionalidad de búsqueda bastante buena, ya que Firebase no proporciona eso. Necesitará tener un servidor de back-end para la búsqueda y quizás integrar Algolia o ElasticSearch. ¡Firebase es gratis! Hasta 100 conexiones. No estoy seguro de cómo un NoSQL puede ser escalable en comparación con SQL.

También supongo que su proyecto será enorme en el futuro y debe ser realmente escalable. Entonces, como desarrollador de iOS, si su aplicación no tiene una función en tiempo real, vaya a tener un servidor de back-end API REST (MySQL, PostgreSQL o cualquier otra cosa), alójelo en AWS (que es realmente confiable) o Heroku (si no lo hace ‘ no importa el precio), o DigitalOcean, o donde prefiera. De lo contrario, haga lo que mencioné en mi primer párrafo.

—- Oh, acabo de ver las características de tu proyecto. Tiene una función de mensajería, Firebase es una buena herramienta para esa función de chat. Lo siento si mi respuesta podría confundirte.

  1. Regístrese usando Gmail y guarde los datos del usuario en mi base de datos; esto se puede manejar tan fácilmente con Firebase SDK 🙂
  2. Guardar la entrada de viaje del usuario (nombre de usuario / ID de viaje / origen / destino / hora / ETC) en la base de datos – ¡ Por supuesto, Firebase también puede hacerlo! Cualquier forma que quieras puede hacerlo.
  3. Emparejar usuarios que comparten los mismos criterios de viaje en función de su entrada de viaje en la base de datos: puede hacerlo de la forma que desee.
  4. Brindar a los usuarios la capacidad de enviarse mensajes / clasificarse entre sí y guardar el historial de clasificación / mensajes en la base de datos por usuario: si se trata de una función de chat que requiere el intercambio de datos en tiempo real, utilice Firebase. Si decide no tomar Firebase, necesitará, por supuesto, configurar su propio servidor de sockets; supongo, por supuesto, que lo sabe.
  5. Conéctese a la API de Google Map y muestre las ubicaciones de los usuarios; no estoy seguro de si esto se maneja en los servidores de Google o si necesito guardar algo en la base de datos. No he probado Google Map antes para iOS. iOS tiene un marco llamado MAPKIT, es bastante fácil de usar. Sí, por supuesto, tendrá que guardar a los usuarios datos largos y largos en la base de datos.
  6. Guardar el perfil de usuario y la información de pago en la base de datos: una pasarela de pago como Braintree y Stripe requiere un servidor de fondo. Si bien PayPal puede ser utilizado por el cliente al servidor de PayPal, utilizando PayPal SDK.

    ¡TU LLAMADA! 🙂