sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL es la mejor base de datos del mundo

El título no es clickbait o hipérbole. Tengo la intención de demostrar que, en virtud tanto del diseño como de la implementación, PostgreSQL es objetiva y mediblemente una mejor base de datos que cualquier otra disponible actualmente, con o sin consideraciones de dinero.

¿Cómo en el mundo puedo reclamar y justificar una declaración tan elevada? Sigue leyendo, gentil nerd. Te prometo que no perderás tu tiempo.

Seguridad transparente

PostgreSQL tiene una lista de correo de seguridad. El proyecto PostgreSQL aprende sobre los vectores de intrusión al mismo tiempo que todos los demás. Nada está oculto, y todo lo que se encuentra se trabaja a un ritmo que hace que los vendedores comerciales se vuelvan locos. No se deje engañar por listas de defectos más cortas publicadas por el mismo proveedor que proporciona el software bajo escrutinio.

Esto significa que todos los vectores de ataque conocidos se manejan tan pronto como se hacen públicos. Este tipo de capacidad de respuesta de seguridad ni siquiera es contemplable en el mercado comercial. Para los proveedores comerciales, el secreto hasta que se pueda abordar el problema es vital para la remediación. PostgreSQL no recibe tal alivio, y eso es fantástico para usted.

El control de concurrencia de múltiples versiones es bueno para usted

PostgreSQL elige un método de control de concurrencia que funciona mejor para cargas de trabajo altas de INSERCIÓN y SELECCIÓN.

Es muy fácil de diseñar para PostgreSQL, teniendo en cuenta las limitaciones de la sobrecarga de seguimiento para

ACTUALIZAR y ELIMINAR. Principalmente, si respeta sus datos, debe aprender a amar la seguridad de datos que le ofrece PostgreSQL.

DDL participa en transacciones utilizando PostgreSQL. Las migraciones funcionan completamente o no funcionan (la peor forma de no funcionar es casi funcionar). Los arneses de prueba son muy fáciles de construir. ¿Necesita restablecer el arnés de prueba? Simplemente VOLVER.

PostgreSQL admite formas de aislamiento de transacciones que cumplen con los estándares, incluida la serialización, lectura confirmada y lectura repetible. Estos métodos proporcionan un cumplimiento ACID completo.

PostgreSQL lo hace todo

Entonces, ¿quieres NoSQL, Riak, REACT, Redis, Mongo, etc.? PostgreSQL hace todo eso. Es cierto que no con todas las campanas y silbatos de todos los productos originales. Por ejemplo, PostgreSQL no crea nuevos fragmentos para ninguno de ellos. Eso sigue siendo un proceso manual. Pero, de nuevo, siempre está pg_partman. . .

¿Quieres un almacén de datos de columna? ¿Qué hay de la tienda? ¿No quieres volver a capacitar a tu personal? Ingrese el idioma de su elección y siga viajando. ¿Quieres una replicación parcial? La replicación lógica de transmisión es para usted.

Me resultaría difícil pensar en una función que quiero que PostgreSQL no tenga, o que no haya una extensión conocida para proporcionar.

¿Quieres extraer datos de otros sistemas? PostgreSQL tiene la colección más vibrante de objetos de federación de cualquier base de datos. Los llaman envoltorios de datos extranjeros, y puede conectar PostgreSQL a un caimán con cinta adhesiva y bridas. Trate cualquier cosa como si fueran sus datos.

Conéctelo a un mapa

Podría decirse que la comunidad de PostGIS es más grande que la propia comunidad de PostgreSQL. Las capacidades de mapeo de PostgreSQL lo ubican en una clase por sí mismo, incluso en comparación con alternativas muy costosas.

El proyecto PostGIS eligió PostgreSQL como plataforma debido a la facilidad de la extensibilidad y las amplias capacidades de enriquecimiento de datos. Estas capacidades están directamente expuestas para que cualquier otro proyecto las aproveche. Tampoco son respondidas por ningún otro proveedor, comercial o de código abierto.

En última instancia, puedes conectarlo a cualquier cosa.

PostgreSQL está creciendo y liderando el camino en código abierto

El proyecto PostgreSQL es una de las organizaciones más visibles en software de código abierto. Con una comunidad enorme y creciendo a un ritmo astronómico, se podría decir que cualquier deficiencia que tenga ahora se superará en un marco de tiempo con el que otros proveedores solo pueden soñar.

Literalmente todos los días se anuncian funciones adicionales de calidad empresarial, y el personal para mantener esas funciones se autoselecciona de un grupo de genios que todas las empresas esperan contratar, y simplemente no hay suficientes para todos.

PostgreSQL crea soluciones que son estables para siempre

PostgreSQL tiene una replicación lógica integrada en el núcleo. Esto permite migraciones entre versiones. Lee eso de nuevo. No está bloqueado en una versión específica de hardware o software. La solución se puede actualizar indefinidamente.

Además, PostgreSQL es compatible con muchas plataformas, incluidas las versiones súper estables de Linux. ¿Necesita una solución que supere el ROI típico de 3 a 5 años? PostgreSQL te durará para siempre, incluso si nunca actualizas el hardware. Y las tarifas por eso son fáciles de calcular. $0.

Declarativo es mejor que imperativo

Los lenguajes de base de datos son generalmente declarativos. Es decir, escribe una consulta en el idioma integrado de su elección, describiendo los resultados que le gustaría ver. La base de datos intenta decodificar sus intenciones y proporcionar los resultados apropiados. Esta es la base de todos los modelos de programación declarativa. En PostgreSQL, esto se reduce a una asignación de funciones a palabras clave en el lenguaje SQL, a veces con varias opciones algorítmicas sobre cómo implementar exactamente cada declaración.

En el antiguo argumento sobre los modelos de programación imperativo vs. declarativo5, se me ocurre que la programación declarativa es solo programación imperativa disfrazada. Cada token declarativo en un lenguaje de consulta de base de datos finalmente se asigna a uno o varios algoritmos que aplican la declaración en términos imperativo. Por lo tanto, el desajuste de impedancia definido por Henrietta está en última instancia en la mente del desarrollador. Es decir, si el desarrollador pensara exactamente como piensa el programador de funciones de la base de datos, entonces no habría discrepancias.

Entonces, ¿cómo podría un modelo declarativo en última instancia ser mejor que un modelo imperativo, dado que uno es solo una característica de llamada del otro? Me alegro de que hayas preguntado, porque eso me lleva a mi punto.

Los desarrolladores de PostgreSQL son más inteligentes que tú. No quiero decir que sea gracioso o tímido. Literalmente, miles de colaboradores han realizado millones de contribuciones al proyecto PostgreSQL, muchas de ellas como mejoras a las contribuciones de otros. Las posibilidades de que lo que sea que hayas pensado en la parte superior de tu cabeza sea mejor que lo que ya se ha implementado son muy bajas. E, incluso si sus pensamientos fueran mejores, debería contribuir con ellos al proyecto PostgreSQL para el beneficio de todos, elevando así el listón para todos los demás.

Entonces, ¿qué hace que PostgreSQL sea tan maravilloso? Mindshare mundial sin consideraciones corporativas. Miles de desarrolladores están trabajando cientos de miles de horas para tomar mejores decisiones algorítmicas. Por lo tanto, su software mejora cada versión, por lo general sin tener que hacer nada en particular de su parte.

¿No es esa la naturaleza del software en general, dices? Bueno, sí. Pero no tanto como cuando el mundo entero está involucrado en su proyecto. PostgreSQL disfruta de un lugar muy destacado en la comunidad de código abierto. Los proveedores comerciales nunca podrán mantenerse al día con la tasa de cambio que un proyecto de código abierto puede proporcionar a este nivel. Las migraciones a código abierto (y particularmente a PostgreSQL) están aquí para probarlo.

Las características continúan llegando. Quedan muy pocas cosas que los proveedores comerciales puedan señalar como una ventaja distintiva. Entre esas cosas se encuentran la compatibilidad con SMP, la replicación bidireccional y las herramientas externas. ¿Adivina en qué está trabajando la comunidad ahora y es muy probable que se publique en los próximos años?

Extiende PostgreSQL como quieras

PostgreSQL tiene una comunidad vibrante de autores que escriben software auxiliar. Esto incluye conectar cualquier idioma que desee y usarlo para extender PostgreSQL de cualquier manera que parezca útil. ¿Te gusta el manejo de cadenas de perl? Bien, entonces usa eso. ¿Qué tal el soporte de mapas de Python? Claro, solo conecte Python y vaya a la ciudad. ¿Quiere escribir servicios web utilizando un back-end de PostgreSQL? Eso es increíble, y PostgreSQL ayudará. ¿JSON? Está bien. XML? tu apuesta PostgreSQL tiene soporte directo para todo eso e infinitamente más. Si puede pensar en un lenguaje que lo haga bien, conéctelo a PostgreSQL y podrá tenerlo en el lado del servidor.

Puede crear sus propias funciones, tipos de datos, operadores, agregados, funciones de ventana o prácticamente cualquier otra cosa. ¿No ves una característica que te gusta? Plagialo y personalízalo desde el código fuente. Eres libre de hacerlo gracias a la licencia.

PostgreSQL también proporciona algunas funciones de enlace que le permiten ampliar la base de datos sin tener que llegar a extremos de programación.

Esta capacidad de asimilar cualquier característica de cualquier otro lenguaje es exclusiva de PostgreSQL. Puede proporcionar cualquier característica utilizando cualquier biblioteca estandarizada que exista. Puede seguir los estándares, mantenerse al día con los cambios, actualizar PostgreSQL mientras está activo y puede hacerlo todo de forma gratuita.

Ir a lo grande y a lo ancho

PostgreSQL tiene varias características para aprovechar al máximo la plataforma de hardware que se le ha dado. Particionamiento, ejecución paralela, índices parciales, tablespaces, almacenamiento en caché y rutinas de mantenimiento paralelas sin bloqueo (últimamente casi todo en PostgreSQL genera la palabra clave CONCURRENTLY).

Cuando eso no es suficiente para usted, entonces la replicación de transmisión física hará que un montón de lectura en espera sea económica. Sharding, Memcache, colas, equilibrio de carga y agrupación de conexiones funcionan con PostgreSQL. ¿Aún no es suficiente? ¿Qué hay de la replicación de transmisión lógica? ¿Quieres geofragmentar la base de datos en todo el mundo, dices? Bueno, bienvenido a la replicación bidireccional.

Y el precio sigue siendo de $0.

Indizar todo eso

PostgreSQL admite una lista tan grande de índices que es alucinante descubrir cómo usarlos todos. GiST, SP-Gist, KNN Gist, GIN, BRIN y Btree están disponibles. Y hay más a través del sistema de extensión, como filtros Bloom y otros.

PostgreSQL puede usarlos con índices basados ​​en funciones, índices parciales, índices de cobertura y búsqueda de texto completo. Y estas funciones ampliadas no se excluyen mutuamente. Puedes usarlos todos al mismo tiempo.

Enróllalo, enróllalo

Varias de las tecnologías ya mencionadas hacen de PostgreSQL una fantástica plataforma de integración y distribución de datos. Múltiples formas de replicación, combinadas con múltiples formas de federación, brindan tecnologías push y pull para casi cualquier tipo de sistema de datos.

Estos se pueden combinar en infinitas configuraciones para unir las soluciones de almacenamiento de bases de datos. Todo eso sin requerir ningún paquete de procesamiento ETL/ELT. PostgreSQL simplemente lo hace. La fuente única de base de datos de la verdad más rápida del planeta lo hace al no sacar los datos del sistema de origen en absoluto. Esto significa que los datos siempre están actualizados y los tiempos de respuesta se pueden administrar.

Si no puede soportar la falta de confiabilidad del sistema de origen o le gustaría un rendimiento un poco mejor en el lado de la consulta, también puede almacenar en caché los datos periódicamente con vistas materializadas, que se pueden actualizar mientras se sigue consultando.

La licencia está abierta

PostgreSQL tiene su propia licencia que se basa en gran medida en la licencia BSD. Esto permite una mayor libertad de uso y distribución.

La licencia se aplica a todo el código del proyecto principal, las principales extensiones de contribución, las bibliotecas de clientes, los administradores de conexiones y la mayoría de las herramientas asociadas.

Es muy permisivo, está escrito en un lenguaje sencillo y no está disponible para su compra.

Documentación fantástica

El proyecto PostgreSQL requiere que cualquier desarrollador que envíe código proporcione documentación para la propuesta. Esta propuesta se utiliza para crear la documentación de la característica que está disponible en varios formatos. Esta documentación también se utiliza en la evaluación de la función en sí y como referencia para desarrollar funciones futuras.

En conjunto, esto significa que PostgreSQL vive de la documentación. Hay muchos desarrolladores de PostgreSQL que han aprendido a codificar en C, cómo funcionan las bases de datos y cómo se administran los proyectos trabajando con el proyecto PostgreSQL. Esta documentación es insuperable.

Desarrollo basado en pruebas

PostgreSQL ha sido ampliamente probado. No, eso no es decirlo lo suficientemente fuerte. PostgreSQL se prueba exhaustivamente. Cada error se encuentra con una prueba para verificar su existencia, y el código se escribe para satisfacer la prueba. Las nuevas funciones se escriben mediante la creación de pruebas (y documentación) primero, luego se codifican hasta que aparece la función.

Estas pruebas están integradas en la granja de compilación para la regresión, por lo que los errores no (re)aparecen en futuras versiones de PostgreSQL. Eso significa que cada prueba (que aún está vigente) se ejecuta para cada versión de PostgreSQL para cada ciclo de compilación. Son muchas pruebas y garantiza que PostgreSQL siga siendo la base de datos más estable disponible.

PostgreSQL solo se lanza cuando se pasan TODAS las pruebas de regresión. Esto proporciona versiones de "0 errores conocidos".

Internacionalización y Localización

Los desarrolladores de PostgreSQL provienen de todo el mundo. Han estado trabajando en muchos idiomas nativos desde el inicio de PostgreSQL como un proyecto de posgrado universitario. La internacionalización y la localización se han integrado en PostgreSQL como una práctica estándar, no como un complemento cuando PostgreSQL comenzó a atraer un mercado global comercial.

Si bien PostgreSQL delega parte de la internacionalización al sistema operativo por razones de compatibilidad, gran parte de la traducción está integrada en el sistema, lo que brinda una experiencia de transición de idioma perfecta.

Operación en la nube

PostgreSQL funciona en arquitecturas en la nube con ansible, kubernetes y herramientas patentadas de varios proveedores de la nube. Hay varias implementaciones nativas de la nube entre las que elegir para que coincidan con su arquitectura.

Si desea tratar los servidores como ganado, no como mascotas, PostgreSQL también lo tiene cubierto en la nube.

Cumplimiento de estándares

PostgreSQL se ha centrado en los estándares durante la vida útil del proyecto. Dado que PostgreSQL se originó en un programa de posgrado universitario, se ha utilizado como implementación de referencia para muchos estándares de SQL.

PostgreSQL implementa SQL/Med y ANSI SQL.

De acuerdo con la fantástica documentación, “PostgreSQL es compatible con la mayoría de las características principales de SQL:2016. De las 179 características obligatorias requeridas para la conformidad total con Core, PostgreSQL cumple con al menos 160”. Esto es más que casi cualquier otro motor de base de datos.

Características del idioma

PostgreSQL implementa expresiones de tabla comunes (CTE), estructuras de control de lenguaje (if, for, case, etc.), manejo estructurado de errores y todas las ventajas que esperaría de un lenguaje procedimental maduro.

¿Ya estás convencido?

Todavía podría hablar sobre la fantástica comunidad de grupos de usuarios, canales de IRC, sitios web con soluciones, artículos de blog y mentores. Podría ponerme filosófico sobre la forma en que la base de datos es multiplataforma, multiarquitectura y multicultural. Hay horas y horas de presentaciones, videos y conferencias.

O simplemente puede descargarlo y ver si es más grande que su imaginación. Creo que te sorprenderás muy gratamente.