Ayuda a eliminar la corrupción dbf


Ayudar a Eliminar DBF Corrupción con un desplazamiento de Motor

FoxTalk de Mayo de 1999

Copyright de Pinnacle Publishing, Inc. Todos los derechos reservados.Ayudar a Eliminar DBF Corrupción con un desplazamiento de Motor
Steve Zimmelman


El archivo DBF ha estado con nosotros durante unos 15 años, y aunque me gusta la arquitectura abierta de la estructura, no & #39 s siempre ha sido un problema inherente con el Índice y la corrupción de los datos, especialmente en un entorno de red. El problema parece ser con la cantidad de datos que & #39 s transmite hacia arriba y hacia abajo el cable de la red. Par esto con varios usuarios, y no & #39 t toma mucho tiempo para pop de un índice. Por otro lado, el único usuario de los sistemas parecen ser mucho más estable y no & #39 t presentan los mismos niveles de corrupción como su red primos. Una solución, a menudo utilizado por los desarrolladores (yo incluido), ha sido volver a Indexar o volver a crear los archivos de índice cuando un índice de error relacionado con el levanta la cabeza. Pero esto puede llegar a ser inmanejable cuando los conjuntos de datos de empezar a acercarse a los cuatro millones de registro de marca. Una solución a largo plazo podría ser la fuerza de la multi-usuario de la aplicación se comporte como un sistema de usuario único por el desarrollo de lo que & #39 s se conoce como la publicación de un motor.

la teoría detrás de La publicación de motor es en realidad bastante simple. La
regla fundamental es nunca permitir que el usuario de publicar nada directamente a la tabla compartida. En su lugar, los mensajes de un usuario a una sombra-la mesa. Después de la sombra de la tabla se llena y no se han producido errores durante la post, la aplicación pasa de una directiva a la publicación de motor, que en esencia dice que el motor de lo que & #39 s supone que debe hacer. En este caso, se actualiza la tabla principal de los datos en la sombra de la tabla. Entonces, ¿qué & #39 s que realmente sucede es que la publicación de un motor o de una sola estación de trabajo, es la única publicación de la tabla principal. Esto es exactamente lo que un sistema de usuario único.

Anatomía de un motorla Mayoría de la publicación de motores I & #39 he visto son capaces de procesar una variedad de solicitudes mediante el uso de una tabla para recibir sus instrucciones. Una simple mesa directiva puede tener una estructura como esta:

FieldFieldNameTypeSize
1IDCharacter10
2PROGRAMCharacter50
3PARAMSCharacter60
4SHADOWTABLCharacter50
5DATEREQESTDate8
6DATEDONEDate8
7START_TIMECharacter8
8END_TIMECharacter8
9DONELogical1
10USERIDCharacter5

El motor se encuentra en un bucle y busca registros en los que el Hecho de campo es Falso. Cuando se ve a uno, se comienza el proceso con la información almacenada en el registro.

Por ejemplo, vamos a & #39 s decir que una aplicación necesita para actualizar un cliente & #39 s registro. La aplicación permitiría obtener una copia del registro y la almacenamos en una sombra de la tabla. Después de que el usuario realiza los cambios deseados, haga clic en la entrada o el botón de confirmación, y la aplicación se escribe un registro a la directiva de la tabla. El código podría ser algo como esto:

* & Copia del registro de cliente de la sombra de la tabla
* & para la edición.
*

Seleccione el Cliente
Si Buscan(m.CustNo)
cTempTable = & #39 Temp & #39 Derecho(Sys(3),4) & #39 .dbf & #39
Copiar (m.cTempTable)
Mientras el Cliente.CustNo=m.CustNo
Endif
*
* & Cuando se haya terminado de editar, agregar el registro a
* & Publicación de la Directiva de la Tabla.
*

Insertar Dentro de la Directiva
(ID,Programa,Parámetros,ShadowTabl,
DateReqest,id de usuario,de Hecho)
Valores (SYS(2015), & #39 CustUpDt.fxp & #39 ,
m.CustNo,m.cTempTable,Fecha(),m.UserID.F.)

Cuando la publicación motor ve el registro, se inicia el proceso de grabar algo como esto:

Si Buscar(.F., & #39 Directiv & #39 )

Reemplazar Directiv.Start_Time Con el Tiempo()

Si!!! Vacío(Directiv.ShadowTabl)
Si el Archivo(Directiv.ShadowTabl)
Uso (Directiv.ShadowTabl) Alias de la Sombra En 0
Endif
Endif
Si!!! Vacío(Directiv.Programa) Y
Archivo(AllTrim(Directiv.Programa))
Si!!! Vacío(Directiv.Parámetros)
pParms = Directiv.Parámetros
Hacer (Directiv.Programa) Con pParms
Else
Hacer (Directiv.Programa)
Endif
Endif

*
* & Cerca de la sombra de la tabla.
*

Si se Utiliza( & #39 Sombra & #39 )
Uso En la Sombra
Endif
*
* & Actualización de la Directiva de la tabla.
*

Seleccione Directiv
Reemplazar .T.,
DateDone Con Fecha de(),
End_Time Con el Tiempo()

Endif

El motor puede ser un no-visible o visible en la aplicación. Yo prefiero un visible motor para poder monitorear el motor & #39 s el progreso, si es necesario.

El uso de una publicación motor no es, obviamente, para las instalaciones más pequeñas, y se requiere un poco de reingeniería. Pero para instalaciones grandes donde la integridad de los datos debe ser asegurada, podría ser el camino a seguir.









Ayuda a eliminar la corrupcion dbf


Ayuda a eliminar la corrupcion dbf : Multi-millones de consejos para hacer su vida mas facil.


Ayudar a Eliminar DBF Corrupcion con un desplazamiento de Motor

FoxTalk de Mayo de 1999

Copyright de Pinnacle Publishing, Inc. Todos los derechos reservados.Ayudar a Eliminar DBF Corrupcion con un desplazamiento de Motor
Steve Zimmelman


El archivo DBF ha estado con nosotros durante unos 15 años, y aunque me gusta la arquitectura abierta de la estructura, no & #39 s siempre ha sido un problema inherente con el Indice y la corrupcion de los datos, especialmente en un entorno de red. El problema parece ser con la cantidad de datos que & #39 s transmite hacia arriba y hacia abajo el cable de la red. Par esto con varios usuarios, y no & #39 t toma mucho tiempo para pop de un indice. Por otro lado, el unico usuario de los sistemas parecen ser mucho mas estable y no & #39 t presentan los mismos niveles de corrupcion como su red primos. Una solucion, a menudo utilizado por los desarrolladores (yo incluido), ha sido volver a Indexar o volver a crear los archivos de indice cuando un indice de error relacionado con el levanta la cabeza. Pero esto puede llegar a ser inmanejable cuando los conjuntos de datos de empezar a acercarse a los cuatro millones de registro de marca. Una solucion a largo plazo podria ser la fuerza de la multi-usuario de la aplicacion se comporte como un sistema de usuario unico por el desarrollo de lo que & #39 s se conoce como la publicacion de un motor.

la teoria detras de La publicacion de motor es en realidad bastante simple. La
regla fundamental es nunca permitir que el usuario de publicar nada directamente a la tabla compartida. En su lugar, los mensajes de un usuario a una sombra-la mesa. Despues de la sombra de la tabla se llena y no se han producido errores durante la post, la aplicacion pasa de una directiva a la publicacion de motor, que en esencia dice que el motor de lo que & #39 s supone que debe hacer. En este caso, se actualiza la tabla principal de los datos en la sombra de la tabla. Entonces, ¿que & #39 s que realmente sucede es que la publicacion de un motor o de una sola estacion de trabajo, es la unica publicacion de la tabla principal. Esto es exactamente lo que un sistema de usuario unico.

Anatomia de un motorla Mayoria de la publicacion de motores I & #39 he visto son capaces de procesar una variedad de solicitudes mediante el uso de una tabla para recibir sus instrucciones. Una simple mesa directiva puede tener una estructura como esta:

FieldFieldNameTypeSize
1IDCharacter10
2PROGRAMCharacter50
3PARAMSCharacter60
4SHADOWTABLCharacter50
5DATEREQESTDate8
6DATEDONEDate8
7START_TIMECharacter8
8END_TIMECharacter8
9DONELogical1
10USERIDCharacter5

El motor se encuentra en un bucle y busca registros en los que el Hecho de campo es Falso. Cuando se ve a uno, se comienza el proceso con la informacion almacenada en el registro.

Por ejemplo, vamos a & #39 s decir que una aplicacion necesita para actualizar un cliente & #39 s registro. La aplicacion permitiria obtener una copia del registro y la almacenamos en una sombra de la tabla. Despues de que el usuario realiza los cambios deseados, haga clic en la entrada o el boton de confirmacion, y la aplicacion se escribe un registro a la directiva de la tabla. El codigo podria ser algo como esto:

* & Copia del registro de cliente de la sombra de la tabla
* & para la edicion.
*

Seleccione el Cliente
Si Buscan(m.CustNo)
cTempTable = & #39 Temp & #39 Derecho(Sys(3),4) & #39 .dbf & #39
Copiar (m.cTempTable)
Mientras el Cliente.CustNo=m.CustNo
Endif
*
* & Cuando se haya terminado de editar, agregar el registro a
* & Publicacion de la Directiva de la Tabla.
*

Insertar Dentro de la Directiva
(ID,Programa,Parametros,ShadowTabl,
DateReqest,id de usuario,de Hecho)
Valores (SYS(2015), & #39 CustUpDt.fxp & #39 ,
m.CustNo,m.cTempTable,Fecha(),m.UserID.F.)

Cuando la publicacion motor ve el registro, se inicia el proceso de grabar algo como esto:

Si Buscar(.F., & #39 Directiv & #39 )

Reemplazar Directiv.Start_Time Con el Tiempo()

Si!!! Vacio(Directiv.ShadowTabl)
Si el Archivo(Directiv.ShadowTabl)
Uso (Directiv.ShadowTabl) Alias de la Sombra En 0
Endif
Endif
Si!!! Vacio(Directiv.Programa) Y
Archivo(AllTrim(Directiv.Programa))
Si!!! Vacio(Directiv.Parametros)
pParms = Directiv.Parametros
Hacer (Directiv.Programa) Con pParms
Else
Hacer (Directiv.Programa)
Endif
Endif

*
* & Cerca de la sombra de la tabla.
*

Si se Utiliza( & #39 Sombra & #39 )
Uso En la Sombra
Endif
*
* & Actualizacion de la Directiva de la tabla.
*

Seleccione Directiv
Reemplazar .T.,
DateDone Con Fecha de(),
End_Time Con el Tiempo()

Endif

El motor puede ser un no-visible o visible en la aplicacion. Yo prefiero un visible motor para poder monitorear el motor & #39 s el progreso, si es necesario.

El uso de una publicacion motor no es, obviamente, para las instalaciones mas pequeñas, y se requiere un poco de reingenieria. Pero para instalaciones grandes donde la integridad de los datos debe ser asegurada, podria ser el camino a seguir.


Ayuda a eliminar la corrupción dbf

Ayuda a eliminar la corrupción dbf : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación