Pregunta

He leído mucho sobre software transaccional de memoria, especialmente en relación con Haskell pero estoy tratando de averiguar cómo es diferente de transacciones de bases de datos? ¿Hay algunas ventajas que no entiendo con STM?

¿Fue útil?

Solución

La idea de una "transacción" en la memoria transaccional de software es prestado explícitamente de bases de datos. La diferencia está en que se ejecutan las transacciones y la forma en que se utilizan.

STM es un concepto de nivel de lengua: una secuencia de operaciones no entra en vigor hasta que se confirma una transacción. Típicamente significa esto que los valores de algunas variables globales / compartida sólo cambian cuando una transacción tiene éxito. La propiedad es impuesta por el tiempo de ejecución del lenguaje. No hay noción inherente de persistencia:. Las variables implicadas en una transacción pueden ser puramente dinámico en la naturaleza (por ejemplo, el tamaño de una cola de trabajo)

transacciones de base de datos son un concepto de nivel de aplicación: una secuencia de operaciones de datos no tiene efecto hasta que se confirma la transacción. Dado que esta es una base de datos, la persistencia es fundamental:. El significado de "teniendo efecto" dentro de una base de datos es que los datos se guardan en algún almacén persistente

potencialmente podría utilizar una base de datos y base de datos de transacciones para implementar un algoritmo de estilo STM, pero te perder la facilidad y conveniencia (y, probablemente, en la mayoría de los casos el rendimiento) de una aplicación a nivel de lenguaje.

Otros consejos

Un STM transacción tiene mucho en común con una transacción de base de datos . En particular, de las propiedades ACID importantes para los diseñadores de bases de datos, STM ofrece atomicidad y aislamiento. La consistencia, sin embargo, es responsabilidad del programador puede escribir-STM transacciones que violen los invariantes de las estructuras internas de datos, por ejemplo. Por último, las transacciones de MCI por lo general no son duraderos; los resultados se almacenan en la memoria RAM volátil, y si la máquina se bloquea después de una transacción exitosa, los resultados pueden ser perdido. Eso, en mi mente, es probable que la diferencia más notable entre una transacción STM y una transacción de base de datos.

STM se utiliza sobre todo para la concurrencia, mientras que las operaciones de base de datos son acerca de la consistencia de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top