por John Vandivier
NOTA: Mayo de 2018: Leer De TypeORM a LoopBack: Una retrospectiva para una perspectiva actualizada!
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Este artículo revisa las soluciones de Mapeo Relacional de objetos (Object) en el ecosistema JavaScript e identifica una solución ideal basada en requisitos específicos.
¿Qué es un OR y por qué es tan importante?las soluciones
OR son útiles para facilitar el desarrollo de API basadas en datos. Los usuarios tienen necesidades concretas que impulsan el modelo de datos de una aplicación. En el desarrollo heredado, esta arquitectura de datos generalmente se implementa y controla mediante scripts de base de datos, como scripts SQL. A continuación, se utiliza una biblioteca separada para que la aplicación de servidor ejecute acciones CRUD en la base de datos.
losMs funcionan como una API de alto nivel para ejecutar CRUD, y en estos días losMs de calidad también nos permiten inicializar los datos a través del código. La manipulación compleja de datos, la limpieza, etc., a menudo es más fácil en el código. Si bien existen herramientas dedicadas de Extracción, transformación y carga (ETL), las mismas tareas ETL se pueden implementar fácilmente en OR.
La implementación de extraer, transformar y cargar con código permite a un sistema integrar más fácilmente datos de fuentes muy diferentes. Las bases de datos SQL de varios tipos, los datos NoSQL, los datos del sistema de archivos y los datos de terceros se pueden integrar en un solo idioma con un OR de JavaScript.
Finalmente, el control de datos orientado al código también permite que un sistema implemente el uso de datos en tiempo de ejecución o en el proceso de compilación, y adapte el uso de forma flexible durante el proceso de desarrollo según sea necesario.
Para reformular, losMs mejoran la productividad de los desarrolladores al proporcionar una API de alto nivel, en un solo idioma, con una funcionalidad que tradicionalmente requeriría varias herramientas y conjuntos de habilidades diferentes. Menos necesidades de habilidades, herramientas y horas requeridas facilita el margen del proyecto. Los requisitos imprevistos y el cronograma del proyecto se preparan mejor con una configuración de datos flexible en tiempo de construcción y ejecución.
Capacidades preferidas de OR
El contexto particular del proyecto que conduce a esta revisión de OR requiere la implementación de una aplicación JavaScript universal de vanguardia, similar a un CMS.
Los marcos de javascript universales de vanguardia vienen en esencialmente 3 sabores: Angular, React y Vue. Es decir, Angular Universal, Next y Nuxt.
El nodo admite de forma nativa las operaciones del sistema de archivos, por lo que los requisitos de datos del Sistema de Gestión de contenido equivalen a una preferencia por la compatibilidad con bases de datos de gran alcance. En total, se consideran los siguientes requisitos:
- Soporte para Mongo y MySQL, con preferencia al soporte de opciones adicionales
- Integración con Webpack
- Integración con Express
- Mínimo impacto en el rendimiento en tiempo de ejecución
- Sintaxis intuitiva
- Características adicionales
- Alta relación de estrella de Github a emisión
- Mantenimiento activo sin fallos de compilación ni dependencias obsoletas
Los candidatos y Resultados
Cada candidato recibió una puntuación entre 0 y 10 por cada capacidad preferida. Una puntuación de 5 significa aceptable. El promedio de una columna puede ser superior o inferior a 5. Por ejemplo, un OR con soporte para varias bases de datos NoSQL y sin soporte para ninguna base de datos SQL recibirá una puntuación entre 2 y 4. 0 indica la falta total de una característica.
Un saludo especial a joi, pg y knex. Estas bibliotecas no sonMs completos, pero son excelentes en lo que hacen. Si no necesita un OR completo, eche un vistazo y vea si pueden satisfacer su necesidad.
Conclusión
Los totales reflejan la utilidad general de cada solución. Los 5 mejores resultados fueron:
- Loopback
- Línea de flotación
- Mangosta
- TypeORM
- Sequelize
Una combinación de necesidades específicas del proyecto, factores omitidos y preferencias personales conducen a las 3 mejores selecciones.
La línea de flotación está muy integrada en el marco de las velas y la mangosta solo soporta MongoDB.
Sequelize y NodeORM2 están restringidos a SQL y carecen de generación de API.
Debido a la sintaxis de TypeScript, TypeORM se integra muy bien con un proyecto Angular.
Como desarrollador, recomiendo crear prototipos de más de una de las mejores soluciones para identificar al verdadero ganador. Las 3 soluciones principales, que son todas candidatas a crear prototipos, incluyen:
- Loopback
- TypeORM
- Caminte
Envié esta información a otros desarrolladores del proyecto, y como equipo decidimos probar primero TypeORM. ¡Vuelve más tarde para ver la retrospectiva!