Control de versiones de la mayor parte de mi trabajo con Git : código, documentación, configuración del sistema. Puedo hacerlo porque todo mi valioso trabajo se almacena como archivos de texto.
También he estado escribiendo y tratando con muchos esquemas SQL para nuestra base de datos Postgres. El esquema incluye vistas, funciones SQL, y escribiremos funciones de Postgres en lenguaje de programación R (a través de PL / R ).
Estaba tratando de copiar y pasar el esquema de fragmentos que escribimos yo y mis colaboradores, pero me olvido de hacerlo. La copia y la acción pasada son repetitivas y propensas a errores.
El método pg_dump / pg_restore no funcionará porque pierde comentarios.
Idealmente, me gustaría tener alguna forma de extraer mi esquema actual en un archivo o archivos y preservar los comentarios para poder controlar la versión.
¿Cuál es la mejor práctica para el esquema de control de versiones con comentarios?
fuente
COMMENT ON
disponible en un entorno no postgres? No creo que sea SQL estándar. lo que significa que esto podría ser postgres específico.Respuestas:
¿Por qué no
COMMENT ON
los distintosSCHEMA
componentes? De esa manera, sus comentarios están en el esquema y serán rechazados.fuente
Los esquemas de control de versiones siempre han sido problemáticos para mí. Generalmente controlo la versión del esquema generado por la herramienta de modelado de datos que estoy usando. El modelo también está controlado por la versión. Utilizo diferencias entre el esquema actual y el anterior para construir el parche requerido para actualizar el esquema. Algunas herramientas de modelado crean scripts de actualización de esquema utilizables. Los scripts de actualización también están controlados por la versión.
Ocasionalmente veo scripts que están destinados a volcar el esquema en un formato adecuado para regenerar el esquema. Uno de estos puede ser lo que estás buscando. Algunas de las herramientas de modelado y consulta son capaces de crear scripts de regeneración de esquemas a partir de un esquema existente. Si puede escribir esto, puede proporcionarle un archivo adecuado para el control de versiones.
fuente
Una alternativa (o puede combinarlos) a mi propuesta anterior es escribir su código SQL en su editor (IDE) y guardar los archivos, y confirmarlos en su VCS, después de eso ejecute el código en la base de datos usando
psql -1f
. De esta manera, el código es controlado por la versión antes de ser ejecutado.fuente
Estoy trabajando en un proyecto similar. Esta es mi propuesta de diseño:
Si no usa un repositorio, cree una tabla simple en formato de texto .CSV como la tabla a continuación:
version | file name | date | description | 1.0 | yyyymmdd-v10.dump | yyyymmdd | new version of user table | 1.1 | backupDB-v11.dump | yyyymmdd | normalized reports tables |
Al mantener una relación en el archivo CSV de los volcados generados por nombre de archivo, puede rastrearlos de alguna manera fácilmente y asegurarse de que la restauración funcionará porque eliminó absolutamente todo.
Hoy en día, cualquier almacenamiento en la nube o en el sitio no debería ser tan costoso incluso si se habla de TB de datos. Hay algunos furiosos de 700 a 1000 USD con hasta 16 TB .
Incluso puede ahorrar $$$ mucho más si se muda a una nube de almacenamiento como el tipo más popular de AWS S3
Si un buen diseño y los estándares de la organización se definen para realizar un seguimiento de toda la infraestructura y los activos de TI, no debería ser doloroso una vez implementado, puede ser relativamente simple y le ahorrará los dolores de configuración y lo más importante ...
fuente