SQL事务和JavaScript承诺如何相关?

时间:2012-11-29 16:42:46

标签: javascript sql asynchronous transactions promise

我最近了解了Promises,它看起来与SQL Transactions类似。

  • 交易全部或全无
  • Promise是顺序回调

    它们是同一概念的不同实现来处理异步事件吗?

2 个答案:

答案 0 :(得分:3)

Promises是处理异步的一般概念。事务是在更新多个记录时保证原子性的一种方法。

它们可能会在某些库中出现,但它们不相关。如果您有一个具有异步API的事务数据库,您可以一起看到它们。

答案 1 :(得分:1)

<强>意图:

promise提供了一个用于同步异步回调的高级接口

事务提供了用于执行从属SQL语句的高级接口

使用案例

当应用程序需要未来值时,它会按需构造承诺并等待它返回。

当数据库需要执行一系列数据操作时,构造一个事务

错误处理

如果承诺引发异常,则返回异常并暂停未来

如果事务引发异常,则会对挂起的事务执行回滚

<强>突变

如果没有异常,则在将来的对象中返回计算值。

如果没有例外,则提交事务的最终结果集

<强>副作用

在事务块中,您可以将查询写入多个数据库,但在将查询写入另一个数据库之前,必须将事务提交或回滚到一个数据库。

将来,您可以为一个或多个全局变量或非局部变量赋值;没有提交或回滚

<强>污点

在执行并发SQL事务期间可能会发生读取。可能的读取操作包括:

  • 脏读,其中第二个SQL事务在第一个SQL事务执行COMMIT之前读取一行
  • 非可重复读取,其中SQL事务读取一行,然后第二个SQL事务修改或删除该行并执行COMMIT;
  • 幻像,其中SQL事务读取符合搜索条件的行,第二个SQL事务然后生成至少一行满足第一个事务的搜索条件,然后第一个事务重复搜索,从而产生不同的结果集

在执行未来警告期间可能会发生分配或序列化

州管理

设置保存点可以回滚部分事务。例如,如果您的事务包括插入,更新和删除,并且您在更新后设置了保存点,则可以回滚事务以排除删除。

未来没有保存点

<强>参考

  

cftransaction  
Understanding the Available Transaction Isolation Levels  
Asynchronous Programming in JavaScript with Promises  
How Transactional Replication Works  
Transaction Process Synchronization  
Optimistic Algorithm  
Concurrency Control Algorithms  
Configuring Serializable Isolation  
Improving concurrency with new registry variables  
Operating Systems Lecture Notes: Allocation and Deadlock  
SQLite File I/O Specification  
Broken promises–C++0x futures  
concurrent.futures — Launching parallel tasks  
Javascript Is Awesome: I don't want promises  
JavaScript Asynchronous Architectures: Events vs. Promises  
AS3 Promises - a guide and example  
Smalltalk Concurrency, Playing With Futures  
promise-streams  
System.Threading.TTask.Future  
Promises Part 5: The Lego Problem  
Callbacks vs Events  
Events and Callbacks  
Events vs. Callbacks – when to use what  
coroutines,callbacks,message-queues - Tcl  
Introduction to ES6 Promises – The Four Functions You Need To Avoid Callback Hell  
All about ES6 Generators  
Chaining Difference in ES6 Promisies and PEP3148 Futures