Problemas de sincronización de bases de datos. Configurar la sincronización en FreeFileSync. Generando un archivo XML con la estructura de la base de datos.


El texto fue procesado por V.I. Grishchenko.

Comenzar

Tarde o temprano todo el mundo se enfrenta a esto. Bueno, si no todos, entonces muchos. Chocan en un grado u otro, algunos en la versión más simple, otros en la compleja. A veces se encuentran medios estándar, a veces se descubre que el problema se puede simplificar a un caso especial. Pero a veces el problema surge de tal manera que las herramientas estándar no están disponibles o no son adecuadas, y la tarea de sincronización de la base de datos no se simplifica a un caso especial...

Hubo un tiempo en que yo también enfrenté esta tarea. Algunos DBMS tienen herramientas de sincronización integradas (este proceso a veces también se denomina replicación y, a veces, se distinguen estos conceptos). Pero, en primer lugar, necesitaba sincronizar las bases de datos administradas por InterBase y, en segundo lugar, incluso esas herramientas fabricantes de terceros, que existen para este DBMS, no me convenían. Necesitaba un mecanismo de sincronización que no permitiera un monitoreo constante por parte de los administradores en todas las bases de datos; el programa fue escrito pensando en las organizaciones pequeñas. InterBase era ideal para esto: liviano, confiable (¡ciertamente más confiable que las bases de datos locales!), que prácticamente no requiere administración y no requiere demasiada carga. ¿Dónde se puede conseguir un replicador de este tipo? Además, debería ser tan simple como un complemento: ejecútelo y funciona. ¡E incluso para insertar trabajo en el programa! Además, ¡para que pueda sincronizar bases de datos en Win y Unix!

Dos días de búsqueda de herramientas adecuadas en Internet no dieron resultado. Mucha publicidad, poca información, precios exorbitantes y, lo que es simplemente aburrido, “herramientas muy cómodas para el administrador con las que es muy fácil corregir colisiones”. Bueno, ¡no tengo un administrador que pueda monitorear cada sincronización (que ocurre un par de veces al día) y corregir colisiones! ¿Qué hacer?

Bien, intentarlo no es una tortura, decidí buscar algo sobre los algoritmos utilizados en la replicación de bases de datos.
NADA.
¡Absolutamente nada!
Si no busqué bien y alguien me muestra materiales interesantes y de libre acceso al respecto, ¡me alegraré! Pero aparentemente se trata de un "khow-how" de las empresas fabricantes o todavía no se han desarrollado algoritmos conocidos sobre este tema. Estoy subiendo a Datos. Nada. Entonces, hay discusiones sobre el tema de las bases de datos distribuidas, pero lo que necesito no está ahí.

De una forma u otra, después de orar, decidí pensar en todo esto por nosotros mismos y ver qué pasa. Lluvia de ideas. Sufrí. Escribió. Corregido. Corregido. Lo corrigí de nuevo. Funcionó. Ha fallado. Se solucionó: dejó de fallar. Todavía está funcionando. Me gusta. ¡Obras! Por supuesto que hay problemas. Y algunos son bastante decentes. Pero... ¡pero todavía funciona!

Así que decidí contarles a los interesados ​​lo que pensé y lo que hice.

Opciones, terminología

Todos los términos son caseros, así que no te ofendas si algo te parece estúpido. :)

Sincronización- el proceso mediante el cual las bases de datos se ponen en un estado idéntico. Si a alguien se le ocurre una definición mejor, la escucharé.

Primero, clasifiquemos la sincronización por dirección y tiempo.

Si los datos se pueden cambiar solo en una de las bases de datos y en el resto los usuarios no los modifican, entonces la sincronización en dichas bases de datos se denominará unidireccional o unidireccional. Si los usuarios del sistema pueden agregar, cambiar o eliminar datos en varias bases de datos del sistema, entonces se tratará de una sincronización bidireccional (bidireccional).

Si la sincronización debe realizarse inmediatamente después de realizar cambios en la base de datos, llamaremos a dicha sincronización sincronización en tiempo real. Y si los cambios de algunas bases de datos se deben realizar en otras bases de datos MÁS TARDE, mediante comando/evento/etc, entonces esto será sincronización retrasada.

Dividamos ahora la sincronización retrasada en dos subclases más. Si la sincronización requiere una conexión a ambas bases de datos y se lleva a cabo analizando las discrepancias en estas bases de datos, entonces lo llamamos sincronización según el estado actual. Y si la sincronización se realiza según el registro (la lista de cambios realizados en la base de datos), entonces lo llamaremos así: sincronización de registros. Ambas variedades se encuentran en desarrollos comerciales. De cara al futuro, diré que implementé la sincronización según el estado actual.

Próximo. Si, durante la sincronización, los cambios pueden ser detectados y realizados por campos individuales de registros, entonces esto sincronización por campos. Si la “unidad” de sincronización es un registro, entonces este sincronización por registros.

Todo esto parece claro intuitivamente, pero quiero rigor y no quiero peleas por diferencias de terminología.

Ahora una cosa es muy definición importante, cuya existencia resulta ser que algunos desarrolladores se encontraron por primera vez con nuestro problema y no están familiarizados con él. Colisión- esto es cierta incertidumbre, a veces un error que ocurre durante la sincronización y se debe al hecho de que los algoritmos de sincronización no son ideales y la tarea en sí a menudo plantea problemas difíciles de resolver. O incluso completamente irresoluble dentro del esquema de sincronización aceptado. En varios ejemplos Veremos las colisiones más adelante.

Cortando el exceso

Entonces, mencioné varias opciones de sincronización y ahora deberíamos deshacernos de las "extra". :) No consideraremos la sincronización en tiempo real; esta sigue siendo una tarea bastante exótica. Veremos la sincronización unidireccional, pero muy brevemente: es bastante tarea sencilla, se puede solucionar sin colisiones (al menos a mí me lo parece, aunque puedo estar equivocado). Está claro que la sincronización unidireccional se implementa fácilmente mediante cualquier método de sincronización bidireccional (registro o estado actual), pero sin muchos de los problemas inherentes a la sincronización bidireccional. Y, por supuesto, nuestro principal objetivo es la sincronización retardada bidireccional.

Identificación de registros

Para sincronizar correctamente los datos de cualquier forma, obviamente es necesario identificar de forma única los registros en todo el sistema (al menos dentro de una tabla). Si a alguien esto no le parece obvio, dímelo, te escribiré con más detalle.

Para la unificación, es deseable que cada tabla incluida en el proceso de sincronización tenga una clave primaria sustituta (ID), generalmente INTEGER. Sin embargo, la mayoría de las veces este es el caso. ¿Cómo podemos garantizar que los registros estén identificados de forma única?

  1. Puede ingresar un campo adicional en cada tabla: el número de la base de datos en la que se creó este registro por primera vez (DBID). En este caso, obviamente, la ID ya no será la clave principal, sino que la clave principal será el par (DBID, ID). Cabe señalar que debido a esto esta decisión no muy atractivo
  2. Puede hacer que la clave principal sea una cadena de un formato especial, por ejemplo XXXX-YYYY-ZZZZZZZZ, donde XXXX es el identificador de la base de datos donde se creó el registro por primera vez, YYYY es el identificador de la tabla, ZZZZZZZZ es el identificador de el registro dentro de una tabla específica en una base de datos específica. Esta solución es altamente escalable y le permite "introducir" mucha información adicional en la identificación, pero también tiene desventajas. En primer lugar, existe cierta redundancia de información. En segundo lugar, un mecanismo más complejo para generar dichas identificaciones. Además, sería una buena idea limitar los posibles valores de ID a este formato. Éstas también son preocupaciones.
  3. En mi opinión, para InterBase la mejor opción es el siguiente: la ID para todas las tablas se genera mediante un disparador normal que selecciona valores del generador. En este caso, el valor inicial del generador es diferente para diferentes bases de datos, lo que garantizará la unicidad del ID en todas las bases de datos. Este enfoque típico de InterBase. Su uso para otros DBMS puede estar limitado por la imposibilidad de establecer el valor inicial para el contador de campo de incremento automático.

Está claro que elegí la tercera opción. :) Queda una pregunta más: el tipo de datos del ID. Está claro que es posible utilizar INT64 (NUMERIC(18)) para ID, entonces no surge la cuestión del rango de números disponible: el rango es enorme. Pero, lamentablemente, existen algunos problemas que impiden que esto se haga. El hecho es que el soporte de Delphi para campos Int64 todavía es algo escaso. Esto se debe tanto a deficiencias en los componentes de acceso a datos (IBX, FIBPlus) como a la falta inicial de soporte para campos Int64 en la clase TField.

Al mismo tiempo, si observamos de cerca el rango INTEGER, encontraremos que cuando

  • usando solo valores positivos
  • usando un solo generador para todas las tablas de la base de datos
  • creación diaria Hay 10.000 registros en el sistema.

tenemos suficiente rango INTEGER para 27 años de operación de un sistema de 21 bases de datos. En este caso, los valores iniciales de los generadores de diferentes bases de datos se determinarán como DBID * 100000000. Para la mayoría de los sistemas, estos son valores bastante normales.

Colisiones

En esta sección, veremos posibles opciones para cambios en la base de datos y notaremos en qué casos es probable que ocurran colisiones. Dividamos todos los cambios realizados en dos clases: cambios realizados en tablas individuales independientes y cambios realizados en tablas conectadas por relaciones de CLAVE EXTRANJERA.

Además, las colisiones pueden deberse al funcionamiento de activadores y restricciones de aplicaciones.

Cambios en tablas individuales.

    Agregado a la mesa nueva entrada

    Después de la sincronización, este registro debería aparecer en las bases de datos restantes. La primera razón de colisiones con este cambio puede ser un conflicto de clave principal, pero este problema se resuelve fácilmente (ver arriba). Entonces, si se agregan un montón de registros a cualquier base de datos, todos deberían duplicarse en las demás sin ningún problema.

    Bueno, también vale la pena señalar que si inmediatamente después de la sincronización estos registros se eliminaron de la base de datos de origen, durante la siguiente sincronización NO deberían restaurarse. :) Sin embargo, esto más bien se refiere a la siguiente subsección:

    La causa de la colisión pueden ser restricciones del tipo ÚNICO. Déjame explicarte. Sean 2 bases de datos: A y B. Se impone una restricción ÚNICA (Campo1) a la tabla (Tabla1). Supongamos que en el momento inicial NO hay registros en ambas bases de datos para los cuales Campo1 = Valor1. Agreguemos dicho registro primero a A y luego a B. No se producen errores: no se viola la restricción ÚNICA. Ahora estamos intentando sincronizar estas bases de datos. Lógicamente deberíamos crear 1 registro en cada base de datos. Pero no podemos, porque esto violaría la restricción. Por supuesto, siempre que los datos se hayan ingresado correctamente y el modelo se haya construido correctamente, estos deben ser los MISMOS registros (por campos temáticos), deben describir la misma entidad. Pero esto no nos lo pone más fácil: ha surgido un conflicto que debe resolverse. Puede resolver esto eliminando la entrada de una base de datos y resincronizándola.

    Este es un gran ejemplo de cómo puede ocurrir una colisión independientemente de la implementación específica del mecanismo de sincronización. Surge fundamentalmente por el carácter distribuido del sistema y el retraso en la sincronización.

    En general, estas colisiones "lógicas" son prácticamente imposibles de rastrear. Y esto es muy triste.

    Se elimina un registro de la tabla.

    Después de la sincronización, este registro debe eliminarse, si está presente, de otras bases de datos. Nuevamente, las colisiones "lógicas" son posibles; por ejemplo, un disparador verifica la presencia de al menos un registro para el cual Campo1 = Valor1 Al principio, había dos registros de este tipo en ambas bases de datos. Eliminaremos una entrada en ambas bases de datos. En este caso no habrá errores, ya que queda el segundo. Pero si eliminamos en diferentes bases de datos diferentes entradas, luego de la sincronización ocurrirá un error, ya que al final no habrá un solo registro Campo1 = Valor1 en las bases de datos. En el caso de este tipo de restricciones, nuevamente, aparentemente, sin un administrador que conozca bien la estructura de la base de datos y sea capaz de corregir tales colisiones, no saldrá nada :(.

    Algunos campos de la tabla han cambiado.

    Después de la sincronización en otras bases de datos, esta entrada debería cambiar de la misma manera.

    La primera y muy probable colisión es el cambio simultáneo de un registro en diferentes bases de datos. Esta colisión tiene dos opciones: si se cambian los mismos campos y si se cambian campos diferentes.

    En el primer caso, obviamente, una versión del cambio es incorrecta; después de todo, la entidad que se describe tiene un significado muy específico. este parámetro. Al aceptar como verdadero un cambio posterior o una base de datos más "principal", podemos resolver el problema fácilmente.

    Y el segundo caso, cuando se sincroniza a nivel de registro, puede causar un problema grave: la pérdida de información ingresada. Déjame darte un ejemplo. El mencionado Ivanov I.I. nuevamente corrió a las instituciones antes mencionadas. Corrió hacia el primero y allí dijo que ahora era una persona discapacitada del segundo grupo, lo que el operador ingresó en la base de datos. Habiendo corrido a la segunda institución ese mismo día, dijo que tenía trillizos (o simplemente a la segunda institución: este es un hospital de maternidad y todos se enteraron allí por sí mismos, e Ivanov solo corrió a una institución). Allí cambiaron el campo “número de hijos”. ¡Atención! Si la sincronización se realiza mediante registros completos, dependiendo del momento de los cambios o de la "superioridad" de las bases de datos, perderemos tal o cual información ingresada, a menos que un administrador inteligente vea descripción detallada sucedió y no corregirá esta situación con sus manos. Creo que esto está claro.

    Entonces vemos que la sincronización a nivel de registro no solo da como resultado el bombeo de campos sin cambios, sino que también puede ser una fuente de errores muy desagradables. Al mismo tiempo, lamentablemente, para implementar la sincronización a nivel de campo, se requiere mucha más información general y estructuras de datos mucho más complejas. Además, la implementación de la sincronización por campos puede estar limitada por las capacidades del DBMS: es necesario determinar la lista de campos modificados y, a menudo, esta tampoco es una tarea trivial.

Cambios en tablas vinculadas

Consideraremos colisiones al sincronizar las tablas TableA y TableB. TableB tiene una clave externa (CLAVE EXTRANJERA) que hace referencia a TableA. Entonces los registros de la tabla A serán padres y los registros correspondientes de la tabla B serán hijos.

    Crea un nuevo registro principal o un nuevo registro secundario para un registro principal existente

    Se crean un nuevo registro principal y sus hijos.

    Tanto los registros de padres como de hijos deben aparecer en otras bases de datos. Aquí el orden en el que se crean los registros en la base de datos resultante se vuelve importante: primero se debe crear el registro principal y luego los secundarios. Sin embargo, en aquellos DBMS en los que las restricciones de integridad referencial se verifican sólo cuando se confirma una transacción, esto no es necesario. Pero ni siquiera ellos pueden crear todos los registros principales nuevos, confirmar la transacción y luego crear nuevos registros secundarios.

    Se elimina un registro infantil

    No hay características especiales; no surgen problemas adicionales debido a la interconexión de las mesas.

    Se eliminan el registro principal y los secundarios.

    En la base de datos resultante, primero se deben eliminar los registros secundarios y luego los registros principales.

  1. Se crea un registro secundario en la base de datos A y el registro principal se elimina en la base de datos B.
  2. En la base de datos A, un registro secundario se transfiere del registro principal 1 al registro principal 2; en la base de datos B, el registro principal 2 se elimina

Bucles de LLAVE EXTRANJERA

Impacto de los desencadenantes

Sincronización de registros: principios generales

Este es el método más utilizado. Todas las acciones realizadas en la base de datos (creación, eliminación y modificación de registros) se almacenan en algún registro, generalmente una tabla separada o un conjunto de tablas en la propia base de datos.

El registro está lleno de activadores, que escriben en el registro información suficiente para volver a ejecutar la acción realizada. Está claro que en caso de eliminar un registro, basta con guardar el identificador de la tabla y el valor de la clave primaria del registro eliminado, y para cambiar o crear un registro, también se deben guardar los valores de los campos. Normalmente también se almacena una marca de tiempo de cuándo se realizó el cambio.

Para sincronizar dos bases de datos, cada una de ellas repite todas las acciones realizadas en la otra base de datos, recuperándolas una a una del log. Esto implica una de las ventajas de la sincronización de registros: no es necesario establecer una conexión con la base de datos; la salida del registro a un archivo separado se puede transferir a través de "floppynet" :) Solo necesita anotar cuidadosamente qué entradas del registro aún no se han sido transferido. Este problema se vuelve más complicado cuando se sincronizan varias bases de datos: debe recordar cuál fue el último registro que se transfirió a cada una de las bases de datos.

Está claro que después de aplicar con éxito el registro a otra base de datos, el registro se puede recortar. Sin embargo, la revista ocupa mucho espacio - en mejor escenario duplica registros nuevos y modificados.

Si el mismo registro se ha modificado varias veces seguidas, puede almacenar todos los cambios intermedios o "pegar" estos cambios en uno solo. Esto reducirá el tamaño del registro, pero puede provocar colisiones innecesarias.

La sincronización de registros se caracteriza por un aumento en los datos almacenados proporcional a la cantidad de cambios en el ciclo de sincronización, y la velocidad de sincronización también es proporcional a la cantidad de cambios en el ciclo de sincronización.

También debe mencionarse que, basándose en el registro, puede crear un servicio para revertir el estado de la base de datos en casi cualquier momento (a menos que los datos correspondientes se hayan eliminado del registro).

La sincronización de registros se implementa de manera bastante simple, pero es obvio que las colisiones son inevitables. Para ilustrar esto, les ofrezco la siguiente analogía. Imagina que tienes 2 habitaciones con cajones. Tienes un robot que se puede programar para mover cajas. En el momento inicial, las cajas de la habitación se ubican de la misma forma. Le das órdenes al robot y este mueve las cajas. Tu compañero le da órdenes a otro robot en la segunda habitación. Después de eso, ordenas a los robots que cambien de lugar y repitan todas las acciones comenzando desde el punto de partida. Obviamente, esto puede causar problemas: en la primera habitación el robot movió la caja número 5, pero en la segunda habitación no estaba en su lugar, en la primera habitación movió la caja número 54 a la esquina, pero en la segunda esquina estaba ocupado.

Cabe señalar que la aplicación exitosa del registro 2 en la base de datos 1 no significa que el registro 1 en la base de datos 2 funcionará sin errores.

Ventajas

  • No se requiere conexión
  • Puede devolver la base de datos a cualquier momento del pasado.
  • Facilidad comparativa de implementación
  • Alta velocidad de sincronización: proporcional al número de cambios por ciclo

Defectos

  • Grandes volúmenes de datos almacenados, proporcionales al número de cambios por ciclo
  • Las colisiones son casi inevitables

Sincronización basada en el estado actual - principios generales

He encontrado sincronización basada en el estado actual en varios productos con mucha menos frecuencia que la sincronización basada en el registro. Pero me parece que de esto no se puede sacar ninguna conclusión sobre su aplicabilidad. Se sabe que en diferentes tareas Es mejor utilizar métodos más adecuados.

Entonces, la sincronización basada en el estado actual siempre se realiza con el establecimiento de una conexión, por lo que es imposible aplicar este método sin la presencia de algún tipo de canal de comunicación entre los servidores.

El proceso que realiza la sincronización establece una conexión con ambas bases de datos (si hay más de dos bases de datos, entonces la sincronización se realiza en pares, por ejemplo, "cadena" o "estrella") y recorre todas las tablas sincronizadas en busca de diferencias. Aquí vemos el primero. inconveniente significativo Método: la velocidad de sincronización es proporcional al número total de registros en la base de datos. Permítanme recordarles que para la sincronización de registros, la velocidad era proporcional a la cantidad de datos modificados.

Cuando se encuentran diferencias, el proceso de control las elimina, llevando ambas bases de datos a una forma idéntica. En este caso, hay que tomar una decisión: cuál de las bases de datos contiene datos más correctos sobre el registro actual que se está procesando, si el registro debe eliminarse de la base de datos 1 o, por el contrario, debe crearse el mismo en la base de datos B, donde aún no está disponible.

Sin embargo, a diferencia de la sincronización de diarios, al aplicar un diario no hay información adicional, V. en este caso el proceso de control puede emitir consultas auxiliares a ambas bases de datos para resolver todas las colisiones lo mejor posible; por ejemplo, para averiguar si hay registros en otras tablas que hacen referencia a ésta. Por lo tanto, al establecer ciertas reglas, puede resolver automáticamente una parte bastante grande de las colisiones.

Si recordamos la analogía con robots, cajas y habitaciones, entonces en este caso el robot mirará ambas habitaciones y, si ve que la caja número 15 está en diferentes lugares Luego, habiendo aceptado una de las ubicaciones como correcta, intentará colocarla en el mismo lugar en otra habitación. Además, si se ocupa su lugar, entonces es posible análisis adicional- ¿Qué casilla está ocupada? ¿Por qué no está ocupada la primera habitación?

Es fácil ver eso método similar en principio, es más correcto: en lugar de repetir estúpidamente acciones de otra base de datos en nuevas condiciones, es posible analizar las diferencias y eliminarlas de la forma más segura posible.

Para realizar la sincronización por estado, normalmente se ingresan uno o más campos adicionales por cada registro de la base de datos, mediante los cuales el proceso de gestión puede determinar cuál de los dos registros contiene más datos actuales. El tamaño de los datos adicionales es nuevamente proporcional a la cantidad total de datos en la base de datos, pero es imposible comparar esto con la sincronización del diario, ya que el tamaño de los campos adicionales es bastante pequeño y no aumenta con los cambios repetidos de datos y las entradas del diario. la mayoría de las veces duplica completamente los registros de la tabla y se acumula cuando se realizan cambios sucesivos.

Resumamos las ventajas y desventajas que hemos considerado en una sola lista.

Ventajas

Defectos

  • Baja velocidad de sincronización: proporcional al número de todos los registros
  • Requiere conexión a ambas bases de datos.
  • Se ingresan campos adicionales para todos los registros; en realidad no es posible comparar con la sincronización del diario.

Sincronización de conjuntos de tablas independientes

Entonces, tengamos varias bases de datos: A, B, C,... En este caso, los cambios de datos ocurren (sin pérdida de generalidad) solo en la base de datos A. También debe tenerse en cuenta que si las bases de datos tienen conjuntos de tablas independientes, luego, en uno de esos conjuntos, los datos se pueden cambiar solo en la base de datos A, y en otro, solo en la base de datos B (por ejemplo). Una estructura de este tipo también puede considerarse un sistema de sincronización unidireccional, que simplemente se lleva a cabo por separado en varios conjuntos de tablas.

Déjame explicarte con un ejemplo. La empresa dispone de una tienda online. Una base de datos está ubicada en la oficina de la empresa y la segunda en un servidor web. Deje que haya varias tablas que describan los productos de una tienda en línea y tablas en el libro de visitas y el foro. Estos conjuntos son independientes entre sí y los puntos de cambio de datos son diferentes. Las descripciones de los productos se completan en la oficina y los cambios deben transferirse a la base de datos del sitio web. Y la información de los clientes: el foro y las publicaciones de invitados se crean en el sitio y van en la dirección opuesta.

En este esquema, las colisiones prácticamente se eliminan: los flujos de actualización de la base de datos no se cruzan. Un esquema de este tipo se puede implementar de casi cualquier forma sin ningún problema.

Los problemas comienzan cuando se introduce en la tienda online la función de compra online de productos. En este caso, los pedidos de los clientes dependen de las tablas de productos. Y los datos de este conjunto pueden cambiar en dos bases de datos simultáneamente.

Continuará...

En la segunda parte pasaremos a mi solución real: implementar la sincronización bidireccional basada en el estado actual de la base de datos.

Amigos, hola a todos! Me alegra verlos a todos como invitados 😉 Hoy les diré cómo sincronizar bases de datos. datos de WordPress. Y también sobre qué tablas de la base de datos son las más importantes y cómo trabajar con ellas.

Cubro este tema por una razón. Como recordarás, hablé de cómo. Muy oportunidad conveniente al desarrollar sitios web.

Entonces, después de finalizar el sitio, es necesario devolverlo al alojamiento. Y con esto, en general, no hay problemas. En el caso de que durante su trabajo en servidor local, el sitio ubicado en Internet no ha sido actualizado. Pero estos casos son extremadamente raros.

Pero si actualiza periódicamente el sitio y al mismo tiempo trabaja, como yo, en su diseño en su computadora, entonces surge una cierta dificultad. en tu base local voluntad nuevo diseño, pero no habrá nuevos artículos ni comentarios.

Y aquí es donde entra en juego la sincronización de bases de datos. Así es como puedes combinar tanto el nuevo diseño como los nuevos registros en la base de datos. Y luego, sin ningún problema, transfiera el sitio terminado nuevamente al hosting.

Y este es sólo un ejemplo, pero usted mismo ya se habrá dado cuenta de que el manejo hábil de la base de datos le abre nuevas oportunidades para trabajar en el sitio.

Estructura de la base de datos de WordPress

Antes de comenzar a sincronizar, debe determinar qué sincronizar. La base de datos de WordPress consta de muchas tablas que almacenan datos sobre usuarios, artículos, categorías, etiquetas, complementos, comentarios, configuración del sistema y mucho más.

En general, no es necesario comprender a fondo todas las tablas. Basta saber qué tablas contienen información sobre artículos, comentarios, etc. Son estas tablas las que son de importancia clave durante la sincronización.

Entonces, veamos las tablas clave en la base de datos de WordPress.

wp_options: contiene todas las configuraciones del sitio;

wp_posts: todos los artículos y publicaciones del sitio;

wp_postmeta – datos auxiliares sobre artículos y publicaciones en el sitio;

wp_comments – comentarios;

wp_commentmeta – información auxiliar sobre comentarios;

wp_term_relationships – relaciones entre artículos y publicaciones con categorías y etiquetas;

wp_terms – conexiones entre categorías (encabezados) y enlaces;

wp_term_taxonomy – conexiones entre categorías, etiquetas, enlaces;

wp_usermeta – información sobre todos los usuarios registrados;

wp_users – información sobre el administrador.

Muchas otras tablas de la base de datos se crean mediante todo tipo de complementos, widgets y otras herramientas similares. Básicamente, estas tablas contienen información del sistema que puede usarse de manera útil. Entonces, mirando atentamente estas tablas, podrás descubrir cuáles consulta clave el visitante llegó a qué página, si fue la primera visita o una visita repetida, e incluso desde qué navegador y sistema operativo.

Ahora que idea general Ahora que conoce la base de datos de WordPress, puede continuar con el objetivo de nuestra lección: la sincronización de la base de datos.

Preparándose para el proceso de sincronización

Antes de comenzar a trabajar con la base de datos, asegúrese de realizar una copia de seguridad. Porque si lo haces, algo anda mal. Luego podrás restaurar todo desde una copia.

Entonces, comprenderá el proceso y podrá crear la base de datos necesaria en su computadora y transferir la base de datos ya preparada al hosting.

Lo más importante es que no te olvides de la copia de seguridad.

Comparación de bases de datos en phpMyAdmin

Este paso es opcional, pero es mejor si sabes comparar bases de datos usando las herramientas disponibles. Este conocimiento a menudo me ayuda.

Para ello utilizaremos la utilidad phpMyAdmin, que está disponible tanto en el hosting como en el servidor local.

Como comparación, usaremos una base de datos en un servidor local, que usé en mi trabajo en . Y la base de datos que uso en mi blog.

A modo de comparación, tomemos una cifra: el número de artículos. Porque para sitios como el mío esto es lo más valioso. Bueno, comentarios, por supuesto. Además, estos números están siempre a la vista.

Análisis del sitio de prueba y la base de datos:

Primero, veamos la cantidad de artículos. Esto se puede hacer en el panel de administración de WordPress. Simplemente abre la consola.

Como puede ver en la captura de pantalla, hay 136 artículos en el sitio de prueba.

Después de actualizar el tema, logré escribir un par de artículos más. Y ahora ya son 138.

La cantidad de artículos debe coincidir con la cantidad de publicaciones en la tabla wp_posts. Pero si abres esta tabla, verás muchas más entradas.

Como puede ver en la captura de pantalla, hay 2245 entradas en total. Y entre ellos se encuentran artículos y entradas individuales. Y hay muchos borradores y otras notas sobre imágenes y demás.

Por tanto, es imposible determinar inmediatamente el número de artículos. Para hacer esto, deberá realizar una pequeña solicitud con parámetros de clasificación.

Abra la base de datos - la tabla wp_posts - vaya a la pestaña SQL - ingrese la consulta:

SELECCIONE * DESDE `wp_posts` DONDE `post_status` = "publicar" Y `post_type` = "publicar"

Esta consulta dice que en la tabla wp_posts debes seleccionar todos los registros (*), donde el estado es publicado (publicar) y este es un artículo (publicación).

Como resultado, obtenemos 136 registros. Ahora bien, esta cifra corresponde al número de artículos.

Otra base de datos se verifica de la misma manera. En mi caso, una base real de mi blog.

Este conocimiento te ayudará a no perder nada importante. Y verifique después de la sincronización si todo fue exitoso.

Como ejemplo molesto, les contaré una pequeña historia. Una vez, uno de mis amigos se mudó de un hosting a otro. Hizo todo según las instrucciones, el soporte técnico lo ayudó. Pero, después de un tiempo, notó que a su sitio web le faltaban dos artículos. Cuando me pidió que averiguara cuál podría ser el problema, revisé y resultó que la nueva base de datos no tenía dos registros que estaban en base antigua datos. Lo más probable es que al transferir la base de datos haya hecho algo mal y haya perdido estos dos artículos. Como resultado, tuve que hacer un poco de magia y devolver estos dos artículos al lugar que les correspondía.

Por eso es importante saber cómo hacer una conciliación. Y asegúrese de que después de la sincronización, todos sus registros se transfieran exitosamente de una base de datos a otra.

Sincronización de bases de datos de WordPress

Realizaremos todas las acciones en el servidor local. y despues base lista Los datos se pueden importar al hosting.

Paso 1: crea dos bases de datos vacías

Si surge la pregunta de por qué hay dos bases de datos, entonces le explico: esto es necesario para no tocar las bases de datos en funcionamiento y mostrar un ejemplo desde cero.

En primer lugar, inicie Denver y escriba localhost/tools/ en su navegador, y luego haga clic en el enlace phpmyadmin.

Paso 2. Importar datos a la base de datos

Entonces hice copias de seguridad de la base de datos. Uno del sitio de prueba y el otro de mi blog en Internet. Serán necesarios para importar contenido a bases de datos recién creadas. Y luego serán un seguro.

También debes tener dos bases de datos que sincronizarás.

Ahora necesita importar los datos de las copias de seguridad a las nuevas bases de datos. Para hacer esto, seleccione una nueva base de datos: abra el marcador "Importar"- elegir "archivo de copia de seguridad"- presione el botón "DE ACUERDO".

Paso 3. Sincronización de la base de datos

En general, es posible simplemente copiar las tablas necesarias de una base de datos a otra. Pero veremos directamente el proceso de sincronización. Tanto completo como parcial (en forma de tablas separadas).

Para hacer esto, vaya a la página principal de phpMyAdmin y seleccione la sección "Sincronizar".

Ahora definimos la base de datos del blog en Internet (es más reciente) como fuente y la base de datos del sitio de prueba como base de datos de destino. Nuestra tarea es copiar nuevos artículos, comentarios y etiquetas en la base de datos del sitio de prueba.

Después de que se lleve a cabo la comparación. Se le pedirá que elija si desea sincronizar mesas separadas, en el que hay cambios, o realizar una sincronización completa.

Si desea sincronizar tablas individuales, debe hacer clic en las letras S o D. Estas letras se volverán grises y en la ventana de abajo verás las tablas de sincronización agregadas. Después de lo cual puede sincronizar estas tablas haciendo clic en el botón "Aplicar cambios seleccionados".

En nuestro caso, este método es adecuado, ya que solo necesitamos sincronizar artículos, comentarios y metadatos.

Para sincronizar las bases de datos por completo, no es necesario marcar nada. Solo presiona un botón "Sincronizar bases de datos".

Eso es todo. Esto completa el proceso de sincronización. Puedes comprobar el resultado. Para ejemplo claro, Cambié la base de datos en el sitio local. Si alguien lo ha olvidado, esto se hace en el archivo wp-config.php. Y ahora puedes comparar la cantidad de artículos, publicaciones y comentarios. Es cierto que hubo algunos comentarios más en el blog mientras escribía el artículo.

Estadísticas del blog de prueba:

Estadísticas del blog de trabajo:

Y finalmente, déjame recordarte que sincronizar la base de datos es sólo la mitad de la batalla. La base de datos también debe incluir archivos involucrados en el funcionamiento del sitio. Por ejemplo, si no copia las capturas de pantalla que acompañan al artículo, el artículo estará sin ellas y con espacios vacíos.

Ahora te aconsejo que veas un vídeo tutorial en el que muestro paso a paso todo el proceso de sincronización de bases de datos.

Eso es todo por hoy. les deseo a todos buen humor. Nos vemos en nuevos materiales. Y por supuesto, estoy esperando tus comentarios 😉 Y los conocimientos adquiridos te serán útiles cuando...

¡Suscríbete a nuevos artículos!

Cualquiera que haya desarrollado alguna vez una aplicación que utilice una base de datos probablemente se haya encontrado con el problema de actualizar la estructura de la base de datos al implementar y actualizar la aplicación.

La mayoría de las veces se utiliza un enfoque simple: crear un conjunto de scripts SQL para modificar la estructura de la base de datos de una versión a otra. Por supuesto que hay uno poderosa herramienta, como Red Gate, pero en primer lugar, no es gratuito y, en segundo lugar, no resuelve el problema de la automatización completa de la actualización.


La tecnología de migraciones, que apareció por primera vez en Hibernate ORM e implementada en Linq, es muy buena y conveniente, pero implica una estrategia de código primero para desarrollar una estructura de base de datos, que requiere mucha mano de obra para proyectos existentes, y el uso de Los disparadores, los procedimientos almacenados y las funciones en la base de datos hacen que la tarea de cambiar primero al código sea casi imposible.


Este artículo propone un enfoque alternativo para resolver este problema, utilizando almacenamiento. estructura de referencia DB en archivo XML y generación automática Script SQL basado en una comparación de la referencia y las estructuras existentes. Así que comencemos...

Generando un archivo XML con la estructura de la base de datos.

Para experimentos usaremos la base de datos DbSyncSample. El script para crear la base de datos se proporciona a continuación.


USAR GO /****** Objeto: Tabla . Fecha de secuencia de comandos: 06/01/2017 10:37:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE .( IDENTITY(1,1) NOT NULL, (50) NULL, NULL, (18 , 2) NO NULO, RESTRICCIÓN DE CLAVE PRIMARIA AGRUPADA (ASC) CON (PAD_INDEX = APAGADO, STATISTICS_NORECOMPUTE = APAGADO, IGNORE_DUP_KEY = APAGADO, ALLOW_ROW_LOCKS = ENCENDIDO, ALLOW_PAGE_LOCKS = ENCENDIDO) ENCENDIDO GO CREAR ÍNDICE NO CLUSTERADO ENCENDIDO. (ASC)CON (PAD_INDEX = DESACTIVADO, STATISTICS_NORECOMPUTE = DESACTIVADO, SORT_IN_TEMPDB = DESACTIVADO, IGNORE_DUP_KEY = DESACTIVADO, DROP_EXISTING = DESACTIVADO, EN LÍNEA = DESACTIVADO, ALLOW_ROW_LOCKS = ACTIVADO, ALLOW_PAGE_LOCKS = ACTIVADO) ON GO /****** Objeto: Tabla. Fecha de secuencia de comandos: 06/01/2017 10:37:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE .( IDENTITY(1,1) NOT NULL, (150) NULL, NULL, (18 , 2) NO NULO, RESTRICCIÓN DE CLAVE PRIMARIA AGRUPADA (ASC) CON (PAD_INDEX = APAGADO, STATISTICS_NORECOMPUTE = APAGADO, IGNORE_DUP_KEY = APAGADO, ALLOW_ROW_LOCKS = ENCENDIDO, ALLOW_PAGE_LOCKS = ENCENDIDO) ENCENDIDO) EN GO /****** Objeto: Script de activación Fecha: 06/01/2017 10:37:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREAR DISPARADOR.

EN. DESPUÉS DE INSERTAR, ACTUALIZAR COMO COMENZAR ACTUALIZAR pedidos SET TotalCost = s.Total FROM (SELECT i.OrderId OId, SUM(d.Cost) Total FROM Detalles d JOIN insertado i ON d.OrderId=i.OrderId GROUP BY i.OrderId) s WHERE Id=s.OId END GO /****** Objeto: Activador Fecha de secuencia de comandos: 06/01/2017 10:37:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER . EN. DESPUÉS DE ELIMINAR COMO COMENZAR ACTUALIZAR Pedidos SET TotalCost = s.Total FROM (SELECT i.OrderId OId, SUM(d.Cost) Total FROM Detalles d JOIN eliminado i ON d.OrderId=i.OrderId GROUP BY i.OrderId) s WHERE Id =s.OId END GO /****** Objeto: Fecha de secuencia de comandos predeterminada: 01/06/2017 10:37:43 ******/ ALTER TABLE. AGREGAR RESTRICCIÓN PREDETERMINADA ((0)) PARA GO /****** Objeto: Fecha de secuencia de comandos predeterminada: 01/06/2017 10:37:43 ******/ ALTER TABLE. AGREGAR RESTRICCIÓN PREDETERMINADA ((0)) PARA GO /****** Objeto: Fecha de secuencia de comandos ForeignKey: 01/06/2017 10:37:43 ******/ ALTER TABLE. CON CHECK AGREGAR RESTRICCIÓN CLAVE EXTRANJERA() REFERENCIAS. () IR ALTERAR TABLA. VERIFICAR RESTRICCIÓN IR Para experimentos creamos.


aplicación de consola


class Programa (private const string OrigConnString = "fuente de datos=.;catálogo inicial=FiocoKb;seguridad integrada=True;MultipleActiveResultSets=True;App=EntityFramework"; static void Main(string args) ( // obtiene XML con la estructura de la base de datos var db = nuevo Shed.DbSync.DataBase(OrigConnString); var xml = db.GetXml(); File.WriteAllText("DbStructure.xml", xml) )

Después de ejecutar el programa, vemos lo siguiente en el archivo DbStructure.xml:


0 1 entero 4 FALSO verdadero FALSO 2 nvarchar 100 verdadero FALSO FALSO 3 fecha y hora 8 verdadero FALSO FALSO 4 decimal 9 FALSO FALSO FALSO 1 Agrupado verdadero verdadero FALSO 1 1 FALSO 2 NO Agrupado FALSO FALSO FALSO 2 1 FALSO 1 4 ((0))
1 entero 4 FALSO verdadero FALSO 2 nvarchar 300 verdadero FALSO FALSO 3 entero 4 verdadero FALSO FALSO 4 decimal 9 FALSO FALSO FALSO 1 Agrupado verdadero verdadero FALSO 1 1 FALSO 1 2137058649 1 3 1 SIN_ACCIÓN SIN_ACCIÓN 4 ((0))
CREAR GATILLO. ON dbo.Details DESPUÉS DE INSERTAR, ACTUALIZAR COMO COMENZAR ACTUALIZAR pedidos SET TotalCost = s.Total FROM (SELECT i.OrderId OId, SUM(d.Cost) Total FROM Detalles d JOIN insertado i ON d.OrderId=i.OrderId GROUP BY i .OrderId) s DONDE Id=s.OId FINAL SQL_TRIGGER ON dbo.Details DESPUÉS DE INSERTAR, ACTUALIZAR COMO COMENZAR ACTUALIZAR pedidos SET TotalCost = s.Total FROM (SELECT i.OrderId OId, SUM(d.Cost) Total FROM Detalles d JOIN insertado i ON d.OrderId=i.OrderId GROUP BY i .OrderId) s DONDE Id=s.OId FINAL

CREAR GATILLO.

ON dbo.Details DESPUÉS DE ELIMINAR COMO COMENZAR ACTUALIZAR Pedidos SET TotalCost = s.Total FROM (SELECT i.OrderId OId, SUM(d.Cost) Total FROM Detalles d JOIN eliminado i ON d.OrderId=i.OrderId GROUP BY i.OrderId ) s DONDE Id=s.OId FINAL


Ampliar/actualizar la estructura de la base de datos utilizando el XML resultante.

Ahora aprendamos a utilizar el XML resultante. Creamos otra base de datos DbSyncSampleCopy vacía y agregamos lo siguiente al código de nuestro programa de consola:


En escenarios de prueba, es posible que necesite crear una base de datos de prueba desde cero cada vez. En este caso, será útil utilizar la función Shed.DbSync.DataBase.ClearDb(string connString)

Monitoreo automático de la estructura de la base de datos.

Implementaremos el seguimiento de la estructura como una función separada, que debe llamarse al iniciar/reiniciar la aplicación o en otro lugar a petición del desarrollador.


vacío estático SyncDb() ( // seguimiento automático detrás de la estructura de la base de datos Shed.DbSync.DataBase.Syncronize(OrigConnString, @"Struct\DbStructure.xml", // ruta al archivo de estructura @"Struct\Logs", // ruta a la carpeta de registros de sincronización @"Struct\update_script .sql" // (opcional) si este parámetro está definido, // se escribirá en él el script generado // para actualizar la base de datos);

)

  1. El seguimiento se realiza mediante el parámetro Versión (etiqueta) en XML. El escenario para utilizar el procedimiento es el siguiente: Asigne una versión de la base de datos. En Microsoft SqlServer Estudio de gestión en el nodo la base requerida datos clic derecho
  2. seleccione Propiedades.
  3. A continuación Propiedades extendidas y en la tabla de propiedades agregue la propiedad Versión con un valor de 1. Con cada modificación posterior de la estructura, esta propiedad debe aumentarse en 1.
  4. Cuando se inicia la aplicación, si no existe un archivo XML o su versión es menor que la de la base de datos, se crea.
  5. Si la versión del archivo XML es mayor que la de la base de datos, se genera y ejecuta un script para actualizar la base de datos.
  6. Si se producen errores durante la ejecución del script, se revierten todos los cambios. Los resultados de la sincronización se escriben en un archivo de registro creado en la carpeta especificado por el parámetro
  7. logDitPath.

Si se especifica el parámetro SqlScriptPath, se crea un archivo con el script del paso 4.

Dejo los experimentos a los lectores. ¡Buena suerte para ti!

  • Etiquetas:
  • ms sql
  • sincronización de bases de datos
  • base de datos
  • sincronizar
  • sincronización de datos
  • SQL
  • cobertizo
cobertizo.dbsync

    Agregar etiquetas

El concepto de base de datos. Clasificación de bases de datos (por la forma de presentación de la información; por la naturaleza de la organización de los datos; por el tipo de modelo utilizado; por el tipo de información almacenada; por la naturaleza de la organización del almacenamiento de datos y el acceso a ellos). Base de datos (DB) es una colección de datos especialmente organizados almacenados en la memoria de un sistema informático y que reflejan el estado de los objetos y sus relaciones en el estado considerado..

área temática Base de datos es un sistema de datos especialmente organizados (), herramientas de software, técnicas, lingüísticas, organizativas y metodológicas diseñadas para garantizar la acumulación centralizada y el uso colectivo polivalente de los datos. En la definición de BnD dada anteriormente, por un lado, se enfatiza que un banco de datos es un sistema complejo que incluye todos los subsistemas de soporte necesarios para el funcionamiento de cualquier sistema automatizado de procesamiento de datos. Por otro lado, esta definición también identifica los principales características distintivas de los bancos de datos:

    Las bases de datos generalmente no se crean para resolver un problema específico para un usuario, sino para un uso multipropósito.

    Las bases de datos reflejan una determinada parte del mundo real. Debemos esforzarnos por garantizar que toda la información que describe el área temática se registre en la base de datos una vez, se acumule y se mantenga actualizada de manera centralizada, y todos los usuarios que necesiten esta información puedan trabajar con ella.

Las bases de datos son datos organizados de una manera especial, es decir. sistemas de datos interconectados, cuya unidad e integridad están respaldadas por un software especial.

Para el funcionamiento de BnD es necesario disponer de un lenguaje y software(llamado DBMS), lo que facilita a los usuarios realizar todas las operaciones relacionadas con la organización del almacenamiento de datos, su actualización y el acceso a ellos. Usuarios del BnD.

1.Usuarios finales. No se debe exigir a los usuarios finales que tengan conocimientos informáticos especiales o habilidades lingüísticas.

2. Empleados del servicio de información. Utilizan principalmente metainformación. A menudo es deseable que se les mantenga privada otra información.

3. Administradores del BnD– responsables de la creación de la BnD y de su funcionamiento fiable, del cumplimiento de las normas de acceso a los datos almacenados, del desarrollo de la BnD (administradores de áreas temáticas, administradores de bases de datos, administradores de aplicaciones).

Clasificación de bases de datos.

1. Según la forma de presentación de la información. El componente central de un banco de datos es la base de datos, y la mayoría de las características de clasificación se relacionan específicamente con ella. Según la forma de presentación de la información. diferenciar visual Y audio sistemas, así como sistemas multimedia. Esta clasificación muestra en qué forma se almacena la información en la base de datos y se entrega desde las bases de datos a los usuarios: en forma de imágenes, sonido o es posible utilizar diferentes formas de visualización de información. El concepto de "imagen" se utiliza aquí en en un sentido amplio– puede ser texto simbólico, una imagen gráfica fija (dibujos, dibujos, etc.), fotografías, mapas geográficos, imágenes en movimiento.

2.Por la naturaleza de la organización de los datos. Las bases de datos se pueden dividir en no estructuradas, semiestructurado Y estructurado. Esta característica de clasificación se refiere a información presentada en forma simbólica. Las bases de datos no estructuradas pueden incluir bases de datos organizadas en forma de redes semánticas. Las bases de datos se pueden considerar parcialmente estructuradas en la forma texto plano o sistemas de hipertexto. Las bases de datos estructuradas requieren un diseño preliminar y una descripción de la estructura de la base de datos. Sólo entonces se podrán poblar con datos las bases de datos de este tipo.

3. Las bases de datos estructuradas a su vez por tipo de modelo utilizado se dividen en: jerárquico, de red, relacional, mixto Y multimodelo.

Clasificación por tipo de modelo se aplica no solo a las bases de datos, sino también a los DBMS.

En las bases de datos estructuradas suele haber varios niveles de unidades de información integradas entre sí. La mayoría de los sistemas estructurados admiten niveles de campo, registro y archivo.

Campo corresponde a la unidad semántica de información más pequeña; un conjunto de campos y/u otras unidades de información más complejas, si son válidas en un DBMS específico, formulario grabación, y un conjunto de registros del mismo tipo representa archivo de base de datos. EN últimamente La mayoría de los DBMS admiten explícitamente el nivel bases de datos, como una colección de archivos de bases de datos interconectados.

En modelos jerárquicos y de red entre unidades de información (registros diferentes archivos) se pueden especificar conexiones.

La representación gráfica del modelo jerárquico es un gráfico de “árbol”. En tal modelo hay un vértice: la raíz del árbol, que es la entrada a la estructura. Cada vértice distinto de la raíz puede tener sólo un vértice de origen y, en caso general, cualquier número de vértices generados.

La representación gráfica del modelo de red es un gráfico del tipo “red”. La entrada a dicha estructura puede ser cualquier vértice. Cada vértice puede tener varios vértices generados y varios vértices de origen. Se pueden declarar varias conexiones entre un par de vértices. La gran mayoría de los DBMS soportan estructuras de red simples, es decir, se mantiene una relación 1:M entre cada par de tipos de registros.

Además de los modelos de red peer-to-peer, existen modelos de red con diferentes tipos de archivos. En tales modelos, se hace una distinción entre archivos principales (principal) y dependientes. El acceso a la estructura sólo es posible a través de los archivos principales. Sólo se pueden vincular entre sí registros de diferentes tipos.

Un lugar especial entre los sistemas estructurados lo ocupan los sistemas construidos sobre el uso. archivos invertidos. La peculiaridad de la organización de los datos en ellos es que los datos reales almacenados y la información sobre las conexiones están lógica y físicamente separados entre sí. Los datos básicos en estos sistemas se almacenan en archivos, cuyos registros pueden tener una estructura compleja. Toda la información de control se concentra en el asociador. La conexión lógica entre archivos se establece a través de un componente asociado llamado red de comunicación. En la figura. Se presenta esquemáticamente el principio de establecer conexiones en tales sistemas. En realidad, las conexiones no se establecen directamente con elementos de comunicación, como se muestra en la figura, sino a través de un convertidor de direcciones. En sistemas construidos sobre archivos invertidos, es posible transferir una relación M:M entre registros de archivos (lo que ningún otro sistema permite). Separar la información asociativa de los datos almacenados reales le permite cambiar las asociaciones sin cambiar los archivos en sí.

4. Por tipo de información almacenada Las bases de datos se dividen en: documental, fáctico Y lexicográfico. Entre las bases de datos documentales se encuentran bibliográfico, abstracto Y texto completo. Las bases de datos lexicográficas incluyen diversos diccionarios (clasificadores, diccionarios multilingües, diccionarios de palabras básicas, etc.).

En los sistemas de tipo hecho, la base de datos almacena información sobre objetos de interés para el usuario en forma de "hechos" (por ejemplo, información biográfica sobre los empleados, datos sobre el lanzamiento de productos por parte de los fabricantes, etc.). En respuesta a la solicitud del usuario, se proporciona la información requerida sobre el objeto u objetos que le interesan o se le envía un mensaje de que la información que está buscando no está en la base de datos.

En las bases de datos documentales, la unidad de almacenamiento es un documento (por ejemplo, el texto de una ley o artículo) y el usuario, en respuesta a su solicitud, recibe un enlace al documento o al documento en sí, en el que puede encontrar la información que le interesa.

Las bases de datos de tipo documental se pueden organizar de diferentes formas: sin almacenamiento y con almacenamiento del propio documento original en un soporte informático. Los sistemas del primer tipo incluyen bases de datos bibliográficas y de resúmenes, así como bases de datos indexadas que “hacen referencia” a la fuente de información. Los sistemas que proporcionan almacenamiento del texto completo de un documento se denominan texto completo.

5. Por la naturaleza de la organización del almacenamiento de datos y el acceso a ellos diferenciar local(personal), general(integrado, centralizado) y repartido bases de datos.

Base de datos personal es una base de datos destinada al uso local por un solo usuario. Las bases de datos locales pueden ser creadas por cada usuario de forma independiente o pueden recuperarse de una base de datos común.

Integrado y distribuido Las bases de datos implican la posibilidad de acceso simultáneo de varios usuarios a la misma información (modo de acceso multiusuario, paralelo).

Bases de datos distribuidas Además, tienen rasgos característicos relacionados con el hecho de que partes físicamente diferentes de la base de datos pueden ubicarse en diferentes computadoras, pero lógicamente, desde el punto de vista del usuario, deben representar un todo único.

Un banco de datos es un sistema complejo hombre-máquina, y no sólo la base de datos, sino también otros componentes de la base de datos se pueden distribuir entre los nodos de la red. Además, es posible que la base de datos en sí no se distribuya (por ejemplo, cuando se proporciona acceso multiusuario a una base de datos centralizada en la red). Al mismo tiempo, bajo BnD distribuido Entenderemos un banco de datos en el que se distribuye al menos uno de sus componentes.

Distinguir extensional(EBD) y intencional DB. Una base de datos extensiva (IDB) se construye utilizando reglas que determinan su contenido, y no almacenando datos explícitamente en una base de datos, como en las bases de datos extensivas.

    El concepto de sistema de gestión de bases de datos (DBMS).

Clasificación de los sistemas gestores de bases de datos. Agrupaciones de clasificación relacionadas con el banco de datos en su conjunto. sistema de gestión de base de datos(SGBD) es un conjunto de lenguajes y herramientas de software diseñados para crear, mantener y compartir una base de datos con muchos usuarios. Normalmente, los DBMS se distinguen por el modelo de datos utilizado. Por lo tanto, DBMS basado en el uso Los datos se denominan DBMS relacionales.

Por lenguas de comunicación Los DBMS se dividen en abierto,cerrado Y mezclado.

Los sistemas abiertos son sistemas en los que se utilizan lenguajes de programación universales para acceder a la base de datos. Los sistemas cerrados tienen propios idiomas comunicación con los usuarios del BnD.

Por número de niveles En arquitectura, se distinguen sistemas de un nivel, dos niveles y tres niveles.

El nivel arquitectónico de un DBMS se entiende como un componente funcional cuyos mecanismos sirven para soportar un cierto nivel de abstracción de datos (niveles lógico y físico, así como la "vista" del usuario). nivel externo).

La numeración de los niveles en la figura es arbitraria, pero no deja de reflejar su significado (el modelo interno sólo puede construirse sobre la base del modelo conceptual; estos dos niveles pueden combinarse, pero siempre están respaldados por el DBMS; el externo nivel puede estar ausente en la arquitectura DBMS).

Por funciones realizadas Los DBMS se dividen en informativo Y quirófanos. Los DBMS de información le permiten organizar el almacenamiento de información y el acceso a ella. Para realizar procesamientos más complejos, es necesario escribir programas especiales. Los DBMS operativos realizan un procesamiento bastante complejo, por ejemplo, le permiten obtener automáticamente indicadores agregados que no se almacenan directamente en la base de datos, pueden cambiar los algoritmos de procesamiento, etc.

Por ámbito de posible aplicación diferenciar universal Y especializado, generalmente DBMS orientados a problemas.

Por "poder" Los DBMS se dividen en "de oficina" Y "corporativo". Las características características de los DBMS de escritorio son requisitos relativamente bajos de medios técnicos, orientación al usuario final y bajo costo.

Los DBMS corporativos brindan trabajo en un ambiente distribuido, alto rendimiento, soporte al trabajo en equipo al diseñar sistemas, han desarrollado herramientas de administración y mayores capacidades para mantener la integridad.

Los DBMS corporativos más famosos son Oracle, Informix, Sybase, MS. Servidor SQL, Progreso y algunos otros.

Existe una división del DBMS por generación:

1.ª generación: basada en un modelo jerárquico y de red.

2da generación – Sistemas relacionales.

Tercera generación: los DBMS deben admitir estructuras de datos complejas y medios más desarrollados para garantizar la integridad de los datos y cumplir con los requisitos de los sistemas abiertos.

Agrupaciones de clasificación relacionadas con el BnD en su conjunto.

Según los términos de servicio. diferenciar gratis Y pagado bancos de datos. Los BnD pagados, a su vez, se dividen en no lucrativo Y comercial. Los bancos de datos sin fines de lucro operan según el principio de autosuficiencia y no tienen como objetivo obtener ganancias.

El objetivo principal de la creación de bancos de datos comerciales es obtener beneficios de las actividades de información.

    Sistemas OLTP y OLAP: características comparativas.

Los sistemas de información varían por la naturaleza del procesamiento de información predominante. Algunos implementan principalmente una gran cantidad de consultas bastante simples (dichos sistemas se denominan OLTP (procesamiento de transacciones en línea). sistemas de procesamiento de transacciones en línea. En otros, por el contrario, se requiere un procesamiento complejo de datos analíticos (para esta clase de sistemas se empezó a utilizar el término OLAP (On-line Analytical Processing)). Término OLAP

a menudo se identifica con el apoyo a la decisión (DSS (Decision Support Systems) - sistemas de apoyo a la decisión). Y como sinónimo del último término utilizan Data Warehousing: almacenes de datos (almacenes), es decir, un conjunto de soluciones organizativas, software y hardware para proporcionar a los analistas información basada en datos de los sistemas de procesamiento de transacciones. nivel inferior y otras fuentes.

"OLAP en en el sentido estricto" - estos son sistemas que proporcionan solo una selección de datos en varias secciones, y "OLAP en sentido amplio", o simplemente OLAP, que incluye:

    soporte para múltiples usuarios que editan la base de datos;

    funciones de modelado, incluidos mecanismos computacionales para obtener resultados derivados, así como agregar y combinar datos;

    previsión, identificación de tendencias y análisis estadístico.

Los almacenes de datos se pueden dividir en dos tipos: almacenes de datos empresariales y mercados de datos. Los almacenes de datos empresariales contienen información que abarca toda la corporación y se agrega de múltiples fuentes operativas para un análisis consolidado. Los data marts contienen un subconjunto de datos empresariales y están creados para departamentos o divisiones dentro de una organización. Los data marts suelen ser creados por el propio departamento y cubren un aspecto específico de interés para los empleados del departamento.

Características comparativas de los sistemas OLTP y OLAP:

Característica

Operaciones predominantes

Entrada de datos, búsqueda

Análisis de datos

Naturaleza de las solicitudes

Muchas transacciones simples

Transacciones complejas

Datos almacenados

Operacional, detallado

Cubriendo un largo período de tiempo, agregado

Tipo de actividad

Operacional, táctico

Analítico, estratégico.

tipo de datos

Estructurado

Varios tipos

    Modelo de datos relacionales: conceptos básicos. Principales tipos de conexiones entre relaciones y sus características.

modelo relacional Los datos (RMD) de un área temática determinada son un conjunto de relaciones que cambian con el tiempo. Al crear un sistema de información, un conjunto de relaciones le permite almacenar datos sobre objetos del área temática y modelar las conexiones entre ellos.

Elemento del modelo relacional

Formulario de presentación

Actitud

Diagrama de relaciones

Fila del encabezado de la columna de la tabla (encabezado de la tabla)

fila de la tabla

Esencia

Descripción de las propiedades del objeto.

Encabezado de columna de tabla

Conjunto de valores de atributos válidos

valor del atributo

Valor del campo en el registro

clave primaria

Uno o más atributos

tipo de datos

Tipo de valor de elemento de tabla

Actitud Es un concepto esencial y es una tabla bidimensional que contiene algunos datos.

Esencia Hay un objeto de cualquier naturaleza cuyos datos se almacenan en una base de datos. Los datos de la entidad se almacenan en una relación.

Atributos representan propiedades que caracterizan a una entidad. En la estructura de la tabla, cada atributo tiene un nombre y corresponde al encabezado de una determinada columna de la tabla.

Matemáticamente, la relación se puede describir de la siguiente manera. Sean dados n conjuntos D1, D2, D3,..., Dn, entonces la relación R es el conjunto de conjuntos ordenados tuplas, donde dk Dk, dk – atributo, un Dk – dominio relación r.

Arroz. Representación de la relación EMPLEADO

Dominio representa el conjunto de todos los valores posibles para un atributo particular de una relación. La relación EMPLEADO K incluye 4 dominios. Dominio 1 contiene los nombres de todos los empleados, dominio 2- números de todos los departamentos de la empresa, dominio 3– nombres de todos los puestos, dominio 4 – fechas de nacimiento de todos los empleados. Cada dominio produce valores de un tipo de datos, como numérico o de carácter.

La relación EMPLEADO contiene 3 tuplas. La tupla de la relación en cuestión consta de 4 elementos, cada uno de los cuales se selecciona del dominio correspondiente. Cada tupla corresponde a una fila de la tabla.

Esquema de relación (encabezado de relación) es una lista de nombres de atributos. Por ejemplo, para el ejemplo dado, el diagrama de relaciones tiene la forma EMPLEADO (Nombre, Departamento, Puesto, D_Nacimiento). El conjunto de tuplas propias de una relación suele denominarse contenido relación (cuerpo).

Clave principal (clave de relación, clave de atributo) es un atributo de una relación que identifica de forma única cada una de sus tuplas. Por ejemplo, en relación con EMPLEADO (nombre completo, departamento, cargo, fecha de nacimiento), el atributo clave es “nombre completo”. Llave Tal vez compuesto (complejo), es decir, constar de varios atributos. Puede haber casos en los que una relación tenga varias combinaciones de atributos, cada uno de los cuales identifica de forma única todas las tuplas de la relación. Todas estas combinaciones de atributos son posibles claves relación. Cualquiera de las claves posibles se puede elegir como primario.

Si la clave primaria elegida consta del conjunto mínimo requerido de atributos, se dice que es no redundante .

Las claves se utilizan normalmente para lograr los siguientes propósitos:

1) eliminar la duplicación de valores en atributos clave;

2) ordenar tuplas;

3) acelerar el trabajo con tuplas de relaciones;

4)organización de tablas de enlace.

Sea la relación R1 tener no clave atributo A cuyos valores son los valores llave atributo B de otra relación R2. Luego dicen que el atributo A de la relación R1 es clave externa .

Las claves foráneas se utilizan para establecer conexiones entre relaciones. Por ejemplo, existen dos relaciones ESTUDIANTE (Nombre, Grupo, Especialidad) y ASIGNATURA (Nombre del Pr., Horario), que están conectadas por la relación ESTUDIANTE_ASIGNATURA (Nombre, Nombre del Pr., Grado) (Fig.). En una relación de conexión, los atributos Nombre completo y Nombre del pr. Estos atributos representan claves foráneas, que son las claves primarias de otras relaciones.

Arroz. Conexión de relación

Condiciones cuyo cumplimiento permite considerar la tabla como una relación.

1. Todas las filas de la tabla deben ser únicas, es decir, no puede haber filas con las mismas claves primarias.

2.Los nombres de las columnas de la tabla deben ser diferentes y sus valores deben ser simples, es decir, no se permite un grupo de valores en una columna de una fila.

3. Todas las filas de una tabla deben tener la misma estructura, correspondiente a los nombres y tipos de las columnas.

4. El orden de las filas de la tabla puede ser arbitrario. La mayoría de las veces, la tabla con la relación se coloca en un archivo separado.

Si la relación especificada por la tabla tiene una clave, entonces se considera que la tabla también tiene una clave y se llama llave o tabla con campos clave.

Principales tipos de conexiones entre relaciones y sus características. Entre tablas se pueden establecer relaciones binarias (entre dos tablas), ternarias (entre tres tablas) y, en general, n-arias. Veamos los más comunes. binario comunicaciones.

Al vincular dos tablas, se distingue una tabla principal y una adicional (subordinada). La vinculación lógica de tablas se realiza mediante clave de comunicación . La clave de enlace consta de uno o más campos, que en este caso se denominan campos de comunicacion (PD).

La esencia de la vinculación es establecer correspondencia entre los campos de vinculación de las tablas principal y adicional. Los campos de relación de la tabla principal pueden ser regulares o clave. Los campos clave se utilizan con mayor frecuencia como campos de conexión de una tabla subordinada.

Dependiendo de cómo se definan los campos de conexión de las tablas principal y adicional (cómo se relacionan los campos clave con los campos de conexión), en general se pueden establecer los siguientes cuatro tipos principales de conexión entre dos tablas (tabla):

    uno – uno (1:1);

    uno – muchos (1:M);

    muchos – uno (M:1);

    mucho - mucho (M:M o M:N).

Mesa Características de los tipos de relaciones de tablas.

Relación 1:1. Se forma una relación 1:1 cuando todos los campos de la relación entre las tablas principal y adicional son clave. Dado que los valores en los campos clave de ambas tablas no se repiten, existe una correspondencia uno a uno entre los registros de estas tablas. Las tablas mismas, de hecho, aquí se vuelven iguales.

Tipo de comunicación 1:M. Una relación 1:M ocurre cuando un registro de la tabla principal corresponde a varios registros de la tabla auxiliar.

Tipo de comunicación M:1. Una relación M:1 ocurre cuando uno o más registros de la tabla principal están asociados con un registro de la tabla adicional.

Tipo de comunicación M: M. El tipo más común de relación M:M ocurre en los casos en que varios registros de la tabla principal corresponden a varios registros de la tabla adicional.

Comentario . En la práctica, una relación suele implicar varias tablas a la vez. En este caso, una de las mesas puede tener varios tipos de conexiones con varias mesas. En los casos en que tablas vinculadas, a su vez, tienen conexiones con otras tablas, formando una jerarquía o árbol de conexiones.

    Teoría de conjuntos y operaciones especiales del álgebra relacional.

Álgebra es un conjunto de objetos con un conjunto de operaciones especificadas que están cerradas con respecto a este conjunto, llamado conjunto principal.

El conjunto principal en álgebra relacional es el conjunto de relaciones. El conjunto completo de operaciones se puede dividir en dos grupos: operaciones de teoría de conjuntos y operaciones especiales. El primer grupo incluye 4 operaciones. Las tres primeras operaciones de la teoría de conjuntos son binarias, es decir, implican dos relaciones y requieren circuitos equivalentes de las relaciones originales.

Asociación dos relaciones es una relación que contiene un conjunto de tuplas que pertenecen a la primera o segunda relación original, o a ambas relaciones al mismo tiempo.

Sean dadas dos relaciones R 1 = ( r 1 ), R 2 = ( r 2 ), donde r 1 y r 2 son respectivamente tuplas de relaciones R 1 y R 2 , entonces la unión R 1 R 2 = ( r | r R 1 Vr R2). Aquí r es una tupla de una nueva relación, V es la operación de suma lógica "O".

Al cruzar

R 3 = R 1 R 2 =( r | r R 1 ^ r R 2 ), aquí ^ es la operación de multiplicación lógica (“Y” lógico).

Por diferencia

Al cruzar relaciones es una relación que contiene un conjunto de tuplas que pertenecen simultáneamente a la primera y a la segunda relación R 1 y R 2:

R 3 = R 1 R 2 =( r | r R 1 ^ r R 2 ), aquí ^ es la operación de multiplicación lógica (“Y”).

Por diferencia las relaciones R 1 y R 2 son una relación que contiene un conjunto de tuplas pertenecientes a R 1 y no pertenecientes a R 2:

R 5 = R 1 \ R 2 = ( r | r R 1 ^ r R 2 )

Embrague o concatenación, tuplas con = y q = .., q m > es una tupla que se obtiene sumando los valores de la segunda al final de la primera. El vínculo entre cyq se denota como (c, q).

(c, q) =<с 1 с 2 , ... , с n , q 1 , q 2 , .... q m >

Aquí n es el número de elementos de la primera tupla c, m es el número de elementos de la segunda tupla q.

Todas las operaciones anteriores no cambiaron el grado o la aridad de las relaciones; esto se desprende de la definición de equivalencia de esquemas de relaciones. La operación del producto cartesiano cambia el grado de la relación resultante.

Producto cartesiano extendido las relaciones R, de grado n con el circuito S R1 =(A 1,A 2 ...,A n) y las relaciones R 2 de grado m con el circuito S R2 =(B 1,B 2,...,B m) es llamada relación R 3er grado n+m con circuito

S R3 = (A 1, A 2, ..., A n, B 1, B 2, ..., B m), que contiene tuplas obtenidas al concatenar cada tupla r de la relación R 1 con cada tupla q de la relación R 2.

Es decir, si R 1 = ( r ), R 2 = ( q )

R 1 R 2 = ((r, q) | r R 1 ^ q R 2 ).

Operaciones especiales de álgebra relacional.

La primera operación especial del álgebra relacional es selección horizontal, o operación de filtrado, o operación de restricción de relación.

Sea a una expresión booleana compuesta de términos de comparación que utilizan los conectivos AND (^), OR (V), NOT (–) y posiblemente paréntesis. Se permiten como términos de comparación los siguientes:

a) término A os a, donde A es el nombre de algún atributo que toma valores del dominio D; a es una constante tomada del mismo dominio D, a D; oc – una de las operaciones de comparación permitidas para un dominio D determinado;

b) término A os B, donde A, B son los nombres de algunos atributos Q-comparables, es decir, atributos que toman valores del mismo dominio D.

Entonces el resultado de la operación de selección o filtrado especificada en la relación R en forma de expresión booleana definida en los atributos de la relación R es la relación R[G], que incluye aquellas tuplas de la relación original para las cuales se realizó la selección o la condición de filtrado es verdadera:

R = (r | r R ^ G(r) = "Verdadero")

La próxima operación especial es operación de diseño. Sea R una relación, S R = (A 1 , ... , An ) un esquema de relación R. Denotemos por B el subconjunto [ Аi]; B ( Ai ) Además, sea B 1 el conjunto de atributos de ( Ai ) no incluidos en B. Si B = (A 1 j.A 2 j .....A k j), B 1 = (A 1 j,A 2 j,...,A k j)y r =<а 1 j, а 2 j,...,а k j >, y k j А k ji, entonces r [B], s=< a 1 j, а 2 j, ... , а m , >; а m , А m j

La proyección de una relación R sobre un conjunto de atributos B, denotada como R[B], es una relación con un esquema correspondiente a un conjunto de atributos B S R | B | = B, que contiene tuplas obtenidas de las tuplas de la relación original R eliminando de ellas valores que no pertenecen a atributos del conjunto B.

Por definición de relaciones, todas las tuplas duplicadas se eliminan de la relación resultante.

La operación de diseño, a veces también llamada operación de selección vertical, permite obtener sólo las características requeridas del objeto modelado. Muy a menudo, la operación de diseño se utiliza como paso intermedio en operaciones de selección o filtrado horizontal. Se utiliza de forma independiente en la etapa final de recibir una respuesta a una solicitud.

La siguiente operación especial del álgebra relacional es la operación conexión condicional.

A diferencia de las operaciones especiales consideradas del álgebra relacional: filtrado y proyección, que son unarias, es decir, se realizan en una relación, la operación de unión condicional es binaria, es decir, la fuente son dos relaciones y el resultado es uno. .

Sea R = (r), Q = (q) – relaciones iniciales, S R, S Q – esquemas de relaciones R y Q, respectivamente.

S R = (A 1, A 2, ..., A k): S Q = (B 1 B 2, ..., B m), donde A, B son los nombres de los atributos en los esquemas de relación R y Q , respectivamente. En este caso, suponemos que se dan conjuntos de atributos A y B

A (A i), j=1,k; En ( B j ) j=1,m , y estos conjuntos constan de atributos Q-comparables.

Entonces la conexión de las relaciones R y Q bajo la condición p será un subconjunto del producto cartesiano de las relaciones R y Q, cuyas tuplas satisfacen la condición p, considerada como el cumplimiento simultáneo de las condiciones:

r.A j Q j В i , : i=l,k, donde k es el número de atributos incluidos en los conjuntos A y B, y Q j es una operación de comparación específica.

A j Q j B i D i Qi es el i-ésimo predicado de comparación, determinado a partir del conjunto de operaciones de comparación permitidas en el dominio Di.

R[P]Q = (r.q) | (rq) | r.A Q j q.B j - “Verdadero”, i=l,k)

La última operación incluida en el conjunto de operaciones de álgebra relacional es la operación división.

Para definir la operación de división, primero consideramos el concepto de conjunto de imágenes.

Sea R una relación con esquema S R = (A1, A 2 ,..., A k);

Sea A un cierto conjunto de atributos A ( A i ) i=l,k , A 1 sea un conjunto de atributos no incluidos en el conjunto A.

La intersección de los conjuntos A y A 1 está vacía: A A 1 = 0; la unión de conjuntos es igual al conjunto de todos los atributos de la relación original: A A 1 = S R .

Entonces el conjunto de imágenes de un elemento en la proyección R[A] es el conjunto de tales elementos en la proyección R para los cuales la concatenación (x, y) son tuplas de la relación R, es decir

QA(x) = (y | y R ^ (x, y) R) – conjunto de imágenes.

Definamos ahora la operación división. Sean dadas dos relaciones R y T, respectivamente, con diagramas: S R = (A 1, A 2, ..., A k); S T =-(B 1, B 2, ..., B m);

A y B – conjuntos de atributos de estas relaciones, de la misma longitud (sin repeticiones);

A S R ; En ST. Los atributos A 1 son atributos de R que no están incluidos en el conjunto A.

La intersección de los conjuntos A A 1 = está vacía y A A 1 = S R . Las proyecciones R[A] y T[B] son ​​compatibles por asociación, es decir, tienen circuitos equivalentes: S R | A |~ S T [B].

Entonces la operación de división asocia las relaciones R y T con la relación

Q = RT, cuyas tuplas son aquellos elementos de la proyección R para los cuales T[B] está incluido en el conjunto de imágenes construidas para ellos:

RT = (r | r R ^ T[B] (y | y R [A] ^ (r, y) R)).

La operación de división es conveniente cuando es necesario comparar un determinado conjunto de características de atributos individuales.

    Varios soluciones arquitectónicas, utilizado en la implementación de DBMS multiusuario. Arquitectura centralizada.

El concepto de base de datos inicialmente asumió la capacidad de resolver muchos problemas por parte de varios usuarios. La característica más importante SGBD moderno es la presencia de tecnología multiusuario. Diferentes implementaciones de tales tecnologías en diferentes tiempos se asoció tanto con las propiedades básicas de la tecnología informática como con el desarrollo de software.

Arquitectura centralizada. Cuando se utiliza esta tecnología, la base de datos, el DBMS y el programa de aplicación (aplicación) se encuentran en una computadora (mainframe o computadora personal) (Fig. 1). Este método de organización no requiere soporte de red y todo se reduce a un funcionamiento autónomo. El trabajo se estructura de la siguiente manera:

La base de datos, en forma de un conjunto de archivos, se encuentra en el disco duro del ordenador.

El DBMS y la aplicación para trabajar con la base de datos están instalados en la misma computadora.

El usuario inicia la aplicación. Utilizando la interfaz de usuario proporcionada por la aplicación, inicia una llamada a la base de datos para recuperar/actualizar información.

Todas las llamadas a la base de datos pasan por el DBMS, que encapsula en sí mismo toda la información sobre la estructura física de la base de datos.

El DBMS inicia el acceso a los datos, asegurando el cumplimiento de las solicitudes de los usuarios.

Arroz. 1. Arquitectura centralizada

Se utilizó una arquitectura similar en las primeras versiones de DB2 y Oracle. La principal desventaja de este modelo es que el rendimiento cae drásticamente a medida que aumenta el número de usuarios.

    Tecnología con red y servidor de archivos(arquitectura de servidor de archivos). Tecnología cliente-servidor. Arquitectura cliente-servidor de tres niveles (varios niveles).

La creciente complejidad de las tareas, la aparición de ordenadores personales y redes de área local fueron los requisitos previos para el surgimiento de una nueva arquitectura. servidor de archivos. Esta arquitectura de base de datos con acceso a la red Implica asignar una de las computadoras de la red como servidor dedicado en el que se almacenarán los archivos de la base de datos. Según las solicitudes de los usuarios, los archivos con servidor de archivos se transmiten a las estaciones de trabajo de los usuarios, donde se lleva a cabo la mayor parte del procesamiento de datos. El servidor central desempeña principalmente únicamente la función de almacenar archivos, sin participar en el procesamiento de los datos en sí (Fig. 2).

Arroz. 2. Arquitectura del servidor de archivos.

El trabajo se estructura de la siguiente manera:

La base de datos en forma de un conjunto de archivos se encuentra en el disco duro de una computadora especialmente dedicada (servidor de archivos).

Existe una red local que consta de computadoras cliente, cada una de las cuales tiene instalado un DBMS y una aplicación para trabajar con la base de datos.

En cada una de las computadoras cliente, los usuarios tienen la capacidad de ejecutar la aplicación. Utilizando la interfaz de usuario proporcionada por la aplicación, inicia una llamada a la base de datos para recuperar/actualizar información.

Todas las llamadas a la base de datos pasan por el DBMS, que encapsula en sí mismo toda la información sobre la estructura física de la base de datos ubicada en el servidor de archivos.

El DBMS inicia llamadas a los datos ubicados en el servidor de archivos, como resultado de lo cual parte de los archivos de la base de datos se copian a la computadora del cliente y se procesan, lo que garantiza el cumplimiento de las solicitudes del usuario (se llevan a cabo las operaciones necesarias con los datos).

Si es necesario, los datos se envían de vuelta al servidor de archivos para actualizar la base de datos.

El DBMS devuelve el resultado a la aplicación.

La aplicación, utilizando la interfaz de usuario, muestra el resultado de las consultas.

En el marco de la arquitectura" servidor de archivos"Se completaron las primeras versiones de los populares DBMS de escritorio, como dBase y Microsoft Access. Las principales desventajas de esta arquitectura:

Cuando muchos usuarios acceden simultáneamente a los mismos datos, el rendimiento cae drásticamente.

Los recursos de la computadora y la red del cliente no se utilizan de manera óptima. Como resultado, aumenta el tráfico de la red y aumentan los requisitos de capacidad de hardware de la computadora del usuario.

Se utiliza un enfoque de navegación, centrado en trabajar con registros individuales.

Bajo nivel de seguridad: robo y daño, realización de cambios erróneos.

Un aparato de transacción insuficientemente desarrollado sirve como fuente de errores en términos de violar la integridad semántica y referencial de la información al mismo tiempo que introduce cambios.

Tecnología cliente-servidor. Usando tecnología " cliente - servidor" asume la presencia de una cierta cantidad de computadoras conectadas a una red, una de las cuales realiza funciones de control especiales (es un servidor de red).

Arquitectura" cliente - servidor"separa las funciones de la aplicación de usuario (cliente) y del servidor. La aplicación cliente genera una solicitud al servidor en el que se encuentra la base de datos, en un lenguaje estructural consultas SQL. El servidor remoto acepta la solicitud y la reenvía al servidor de base de datos SQL. El servidor SQL es un programa especial que administra una base de datos remota. El servidor SQL garantiza que la consulta se ejecute en la base de datos, se genere el resultado de la consulta y se devuelva a la aplicación cliente. La computadora cliente solo envía una solicitud a la base de datos del servidor y recibe el resultado, luego de lo cual lo interpreta según sea necesario y lo presenta al usuario. Porque El resultado de la solicitud se envía a la aplicación del cliente; sólo los datos que el cliente necesita “viajan” a través de la red. Como resultado, se reduce la carga en la red. Dado que la solicitud se ejecuta en el mismo lugar donde se almacenan los datos (en el servidor), no es necesario enviar grandes lotes de datos. El servidor SQL optimiza la consulta recibida para que se ejecute en tiempo minimo con los menores costos generales. La arquitectura del sistema se muestra en la Fig. 3.

Todo esto aumenta el rendimiento del sistema y reduce el tiempo que lleva esperar el resultado de una solicitud. Cuando el servidor ejecuta consultas, el grado de seguridad de los datos aumenta significativamente, ya que las reglas de integridad de los datos se definen en la base de datos del servidor y son las mismas para todas las aplicaciones que utilizan esta base de datos. Esto elimina la posibilidad de definir reglas contradictorias para mantener la integridad.

Arroz. 3. Arquitectura cliente-servidor.

La base de datos en forma de un conjunto de archivos se encuentra en el disco duro de una computadora especialmente dedicada (servidor de red).

Existe una red local que consta de computadoras cliente, cada una de las cuales tiene instalada una aplicación cliente para trabajar con la base de datos.

En cada una de las computadoras cliente, los usuarios tienen la capacidad de ejecutar la aplicación. Utilizando la interfaz de usuario proporcionada por la aplicación, inicia una llamada al DBMS ubicado en el servidor para recuperar/actualizar información. Para la comunicación se utiliza un lenguaje de consulta especial SQL, es decir Sólo el texto de la solicitud se transmite a través de la red desde el cliente al servidor.

El DBMS encapsula en sí mismo toda la información sobre la estructura física de la base de datos ubicada en el servidor.

El DBMS inicia llamadas a datos ubicados en el servidor, como resultado de lo cual todo el procesamiento de datos se lleva a cabo en el servidor y solo el resultado de la solicitud se copia a la computadora cliente. Por tanto, el DBMS devuelve el resultado a la aplicación.

La aplicación, utilizando la interfaz de usuario, muestra el resultado de las consultas.

Funciones de la aplicación cliente: envío de solicitudes; interpretación de solicitudes; presentación de resultados.

Funciones de la parte del servidor: recibir solicitudes; garantizar un sistema de seguridad y control de acceso; gestión de la integridad de la base de datos; Implementación de la estabilidad del modo operativo multiusuario.

en arquitectura" cliente - servidor“Los DBMS llamados “industriales” funcionan. Se llaman industriales porque son los DBMS de esta clase los que pueden garantizar el funcionamiento de los sistemas de información a escala de una mediana y gran empresa, organización o banco (MS SQL Server, Oracle). , InterBase, etcétera).

El servidor SQL lo mantiene un empleado individual o un grupo de empleados. Gestionan las características físicas de la base de datos, optimizan, configuran y redefinen varios componentes de la base de datos, crean nuevas bases de datos, modifican las existentes, etc.

Veamos las principales ventajas de esta arquitectura en comparación con la arquitectura de servidor de archivos:

El tráfico de red se reduce significativamente.

Se reduce la complejidad de las aplicaciones cliente (la mayor parte de la carga recae en la parte del servidor) y, en consecuencia, se reducen los requisitos de capacidad de hardware de las computadoras cliente.

La presencia de una herramienta de software especial, el servidor SQL, hace que ya se haya resuelto una parte importante de las tareas de diseño y programación.

La integridad y seguridad de la base de datos aumenta significativamente.

Las desventajas incluyen mayores costos financieros para hardware y software, así como ciertas dificultades con la actualización oportuna de las aplicaciones cliente en todas las computadoras cliente.

Arquitectura cliente-servidor de tres niveles (varios niveles).Tres enlaces(en algunos casos multienlace)arquitectura representa una mejora adicional de la tecnología" cliente - servidor". Habiendo considerado la arquitectura" cliente - servidor", podemos concluir que es un sistema de 2 niveles: el primer enlace es la aplicación cliente, el segundo enlace es el servidor de la base de datos + la propia base de datos. B arquitectura de tres niveles Toda la lógica empresarial (lógica empresarial), previamente incluida en las aplicaciones cliente, se separa en una unidad separada llamada servidor de aplicaciones. En este caso, las aplicaciones cliente se quedan sólo con la interfaz de usuario. Por lo tanto, en el ejemplo descrito anteriormente, un navegador web actúa como una aplicación cliente. Ahora, cuando cambia la lógica empresarial, ya no es necesario cambiar las aplicaciones cliente y actualizarlas para todos los usuarios. Además, se reducen al máximo los requisitos de equipamiento del usuario.

Así, como resultado, el trabajo se estructura de la siguiente manera:

Una base de datos en forma de un conjunto de archivos se almacena en el disco duro de una computadora especialmente dedicada (servidor de red).

El DBMS también se encuentra en el servidor de red.

Hay un servidor de aplicaciones especialmente dedicado en el que se encuentra el software de análisis empresarial (lógica empresarial).

Hay muchos ordenadores cliente, cada uno de los cuales tiene el llamado " cliente ligero" es una aplicación cliente que implementa la interfaz de usuario.

En cada una de las computadoras cliente, los usuarios tienen la oportunidad de ejecutar una aplicación: un cliente ligero. Utilizando la interfaz de usuario proporcionada por la aplicación, inicia una llamada al software de inteligencia empresarial ubicado en el servidor de la aplicación.

El servidor de aplicaciones analiza los requisitos del usuario y genera consultas a la base de datos. Para la comunicación se utiliza un lenguaje de consulta especial SQL, es decir Sólo el texto de la solicitud se transmite a través de la red desde el servidor de aplicaciones al servidor de la base de datos.

El DBMS encapsula en sí mismo toda la información sobre la estructura física de la base de datos.

El DBMS inicia llamadas a datos ubicados en el servidor, como resultado de lo cual el resultado de la consulta se copia al servidor de aplicaciones.

El servidor de aplicaciones devuelve el resultado a la aplicación cliente (usuario).

La aplicación, utilizando la interfaz de usuario, muestra el resultado de las consultas.

    El concepto de integridad de la base de datos. Integridad lógica y física de la base de datos. Clasificación de restricciones de integridad.

Garantizar la integridad de los datos es la tarea más importante en el diseño y operación de sistemas de procesamiento de datos (DPS). El problema de la integridad es garantizar... que los datos de la base de datos sean correctos en todo momento”. Integridad – relevancia y coherencia de la información, su protección contra destrucción y cambios no autorizados.

La integridad es uno de los aspectos de la seguridad de la información, junto con la disponibilidad (la capacidad de obtener el servicio de información requerido a un costo aceptable) y la confidencialidad (protección contra lecturas no autorizadas).

La integridad de los datos es una propiedad inherente de una base de datos y garantizarla es la tarea más importante en el diseño de BnD. La integridad de los datos se describe mediante un conjunto de cláusulas especiales llamadas restricciones de integridad. Las restricciones de integridad son declaraciones sobre los valores aceptables de unidades de información individuales y las relaciones entre ellas. Estas restricciones están determinadas en la mayoría de los casos por las características del área temática. Al realizar operaciones en la base de datos, se verifica el cumplimiento de las restricciones de integridad. Las restricciones de integridad se pueden clasificar según diferentes signos(arroz.).

Integridad lógica – el estado de la base de datos, caracterizado por la ausencia de violaciones de las restricciones de integridad inherentes al modelo lógico de datos (es decir, restricciones implícitas) y restricciones explícitas especificadas de forma declarativa o procesal. integridad física ausencia de violaciones de las especificaciones del esquema de almacenamiento, así como destrucción física de datos en los medios.

Para controlar la integridad de la base de datos, también se utiliza un mecanismo de activación. Desencadenar– esta es una acción que se activa cuando ocurre un evento específico (inserción, eliminación, actualización de un registro). Los desencadenantes se especifican en el esquema de la base de datos. Un concepto más amplio en relación con desencadenar es el concepto procedimiento almacenado. Los procedimientos almacenados describen partes de la lógica de la aplicación, se almacenan y ejecutan en el servidor, lo que permite mejorar las características de rendimiento.

Integridad de datos Es una propiedad integral de una base de datos y su provisión es la tarea más importante del diseño de una base de datos. La integridad de los datos se describe mediante un conjunto de cláusulas especiales llamadas restricciones de integridad. Las restricciones de integridad son declaraciones sobre los valores aceptables de unidades de información individuales y las relaciones entre ellas. Estas restricciones están determinadas en la mayoría de los casos por las características del área temática. Al realizar operaciones en la base de datos, se verifica el cumplimiento de las restricciones de integridad. Restricciones de integridad se pueden clasificar según diferentes criterios (Fig. a continuación).

Hay lógicas y integridad física DB. Integridad lógica– el estado de la base de datos, caracterizado por la ausencia de violaciones de las limitaciones de integridad inherentes a modelo lógico datos (es decir, restricciones implícitas) y restricciones explícitas, especificadas de forma declarativa o procesal. integridad física– ausencia de violaciones de las especificaciones del esquema de almacenamiento, así como destrucción física de datos en los medios.

9. Problema de integridad de la base de datos. Transacciones y bloqueos. Sincronización del trabajo de los usuarios.

La integridad es uno de los aspectos de la seguridad de la información, junto con la disponibilidad (la capacidad de obtener el servicio de información requerido a un costo aceptable) y la confidencialidad (protección contra lecturas no autorizadas).

Garantizar la integridad de los datos es la tarea más importante en el diseño y operación de sistemas de procesamiento de datos (DPS). El problema de la integridad es garantizar que los datos de la base de datos sean correctos en todo momento”. Integridad – relevancia y coherencia de la información, su protección contra destrucción y cambios no autorizados.

También se utiliza para monitorear la integridad de la base de datos. mecanismo de disparo. Desencadenar– esta es una acción que se activa cuando ocurre un evento específico (inserción, eliminación, actualización de un registro). Los desencadenantes se especifican en el esquema de la base de datos. Un concepto más amplio en relación con un desencadenante es el concepto procedimiento almacenado. Los procedimientos almacenados describen partes de la lógica de la aplicación, se almacenan y ejecutan en el servidor, lo que permite mejorar las características de rendimiento.

Actas. Una transacción es un conjunto completo de acciones sobre una base de datos, que la transfiere de un estado integral en sentido lógico a otro. Las transacciones están sujetas a un conjunto de requisitos conocidos como ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad). Estos requisitos surgen de la definición de una transacción.

    Atomicidad. Una transacción es un determinado conjunto de acciones completadas.

    El sistema garantiza su ejecución según el principio de "todo o nada": o se realizan todas las acciones y luego la transacción se "arregla"; o, si no es posible realizar todas las acciones, por ejemplo, en caso de fallas, la transacción se "revierte" y la base de datos permanece en su estado original.

    Consistencia. Se supone que como resultado de la transacción, el sistema pasa de un estado correcto a otro.

    Aislamiento. Durante una transacción, los datos pueden estar temporalmente en un estado inconsistente. Dichos datos no deben ser visibles para otras transacciones hasta que se completen los cambios (es decir, hasta que se haya confirmado formalmente el peso de la modificación).

Durabilidad. Una vez que se confirma una transacción, sus resultados deben ser duraderos. Los estados de todos los objetos se conservarán incluso en caso de fallos del hardware o del sistema.

Cabellos. Los algoritmos de control de concurrencia más populares se basan en un mecanismo de bloqueo. El bloqueo es la prohibición de realizar determinadas operaciones sobre datos si otro usuario los está tratando. En este diseño, cada vez que una transacción intenta acceder a cualquier unidad de datos, se coloca un bloqueo en esa unidad. Y Los bloqueos se aplican de acuerdo con reglas de compatibilidad de bloqueos que evitan conflictos.

La serialización de las transacciones está garantizada si los bloqueos de las transacciones que se ejecutan simultáneamente cumplen la siguiente regla: "No se adquirirá ningún bloqueo en nombre de ninguna transacción hasta que se haya liberado un bloqueo previamente retenido". Esta regla se conoce como bloqueo de dos fases , desde que la transacción pasa por primera vez por la fase crecimiento, cuando configura las cerraduras, y luego la fase de compresión cuando se liberan las cerraduras. Se puede bloquear automáticamente, y tal vez controlado por el usuario.

En función de las unidades de información bloqueadas se pueden distinguir las siguientes: niveles de bloqueo : base de datos, colección de tablas relacionadas, tabla, colección de registros relacionados, registro, campo. Los objetos de bloqueo pueden ser una página, un grupo de páginas o un área de base de datos.

Algunos sistemas proporcionan dinámica un esquema de bloqueo en el que una transacción primero bloquea una gran cantidad de información, como una página.

Distinguir pesimista Yoptimista bloqueando. Los bloqueos pesimistas impiden el acceso a los datos de otras transacciones cuando alguna transacción ya está trabajando en ellos. Los bloqueos optimistas permiten transacciones simultáneas, monitorean conflictos y los resuelven.

Sincronización del trabajo de los usuarios.Replicación – tecnología utilizada en DDB (base de datos distribuida) que brinda soporte para copias de la base de datos completa o sus fragmentos en varios nodos de la red. Una copia de una base de datos que es miembro de un conjunto de otras copias que se pueden sincronizar entre sí se llama réplica. Las copias de la base de datos suelen estar cerca de los lugares donde se utiliza la información. El término “replicación” se utiliza como sinónimo del concepto de “replicación”. El proceso de actualización de réplicas, durante el cual se transfieren los registros actualizados y otros objetos y se concilian los datos duplicados, se llamasincronización . El intercambio de datos entre réplicas puede ser unidireccional o bidireccional. Además, es posible sincronizar réplicas bajo el control de un sincronizador. A diferencia de los sistemas realmente distribuidos, en los que, al ejecutar solicitudes distribuidas, se implementa el protocolo. fijación en dos fases Los sistemas con bases de datos replicadas suelen utilizar herramientas de replicación asíncronas.

Actualmente, muchos DBMS conocidos ofrecen a los usuarios capacidades de replicación. Algunos sistemas utilizan metáforas de la publicación (editor, publicación, suscriptor). La colección de datos que se pueden replicar se llama publicación.

Sincronización de bases de datos datos mysql le permite crear y mantener automáticamente dos o más bases de datos con contenido idéntico. Se necesita sincronización para crear espejos, clústeres, etc. Programa Copia de seguridad práctica le permite automatizar completamente el proceso de sincronización de la base de datos MySQL.

Métodos de sincronización de bases de datos MySQL

En MySQL, la sincronización entre dos bases de datos puede ser unidireccional o bidireccional.

Sincronización unidireccional

El contenido de una base de datos (maestra) se copia a otra (esclava). En MySQL, la sincronización de bases de datos es diferentes servidores utilizado para replicar tablas, crear bases de datos de prueba y respaldo, respaldo de MySQL, etc.

Sincronización bidireccional

La sincronización bidireccional de MySQL garantiza la copia cambios actuales de cada base de datos a otra. Esta técnica se utiliza principalmente para la distribución. tareas informáticas relacionados con bases de datos: creación de clústeres y espejos de bases de datos.

Ventajas de Handy Backup para la sincronización de bases de datos MySQL

Handy Backup contiene un complemento MySQL incorporado que le permite copiar el estado de las bases de datos y tablas MySQL en modo "caliente" (sin detener el servidor), así como en modo "frío" (con parada). Esto proporciona las siguientes ventajas:

  • Sincronización de datos MySQL (copia y restauración) según cronograma;
  • Almacenamiento de tablas MySQL en formato legible por humanos formato de texto de la lista de comandos SQL;
  • Parada automática del servidor receptor MySQL al restaurar datos;
  • Copia versionada y creación de marcas de tiempo en las copias según sea necesario;
  • Obtener acceso a servidores MySQL externos.

¿Cómo sincronizar MySQL usando Handy Backup?

Sincronizar bases de datos MySQL consiste en crear una copia de seguridad de la base de datos y luego restaurar las tablas de esta base de datos en otro servidor mediante el complemento "MySQL". Este proceso incluye 2 tareas secuenciales:

Haga una copia de seguridad de los datos de la tabla de origen (en caso de sincronización unidireccional) o de ambas tablas (en caso de sincronización simétrica).

Restaurando datos a sincronizados tabla mysql, completa o diferencial, según el tipo de sincronización.

Una descripción detallada de las tareas de copia y restauración de MySQL está disponible en la Guía del usuario.

Automatización de tareas de sincronización de tablas MySQL

Para que el proceso de sincronización de la base de datos MySQL sea completamente automático, preste atención a los siguientes puntos:

  1. Divida el tiempo para ejecutar tareas de copia de seguridad y restauración de MySQL el tiempo suficiente para tarea en ejecución La copia de seguridad de la base de datos se ha completado antes de que pueda comenzar la restauración.
  2. Para copias intermedias de MySQL, elija medios que sean lo suficientemente rápidos en términos de velocidad de acceso: unidades locales y externas, dispositivos NAS/SAN y servidores FTP/SFTP/FTPS con un alto ancho de banda de interfaz de red.
  3. Utilice las capacidades del Paso 7 (configurar programas para que se ejecuten antes y/o después de completar una tarea) para detener y reiniciar automáticamente el servidor MySQL en el lado de recuperación, así como en el lado de escritura para la carga en frío de datos.

  1. Dado que las copias de seguridad se almacenan en un formato de texto legible, utilice herramientas para realizar correcciones en los archivos restaurados si es necesario (por ejemplo, para cambiar el mecanismo de almacenamiento de datos).

Comprar una licencia

Como se mencionó anteriormente, la sincronización de la base de datos MySQL no reemplaza las copias de seguridad periódicas. Recomendamos realizar tareas de respaldo de bases de datos MySQL utilizando una de nuestras soluciones de software orientadas a negocios.

  • Si solo necesita trabajar con un servidor DBMS MySQL, Handy Backup Office Expert le proporcionará todas las capacidades necesarias para esto y muchas funciones adicionales.
  • Si necesita mantener varios servidores y estaciones de trabajo, organizar procesos de copia de seguridad de bases de datos MySQL y cualquier otro dato de una estación de trabajo común, utilice nuestra solución insignia Handy Backup Server Network.

Para comparar precios de estos y otros productos, consulte la página Comprar.

Vídeotutorial

El siguiente vídeo tutorial muestra cómo hacerlo. respaldo y restaurar una base de datos MySQL usando la versión de Windows de Handy Backup. EN momento presente El vídeo sólo está disponible en inglés.

Descargue e instale nuestro software ahora mismo: ¡la primera copia de seguridad de sus datos estará lista en solo un par de minutos!

Handy Backup proporciona una herramienta confiable, rápida y altamente personalizable para sincronizar MySQL a nivel de tabla y base de datos. Pruébalo ahora descargándolo gratis versión completa programas durante 30 días!




Arriba