实时数据库和“普通”数据库有什么区别?

23

我正在研究一些后端即服务(BaaS)解决方案用于开发Web应用程序,我经常看到Firebase 将其数据库称为“实时数据库”,而例如Backendless 没有在任何地方提到“实时”这个词

我知道实时意味着数据会立即处理,但是我认为所有的数据库都是这样做的吗?例如如果我有一个MySQL/SQLite/PostgreSQL数据库并插入数据,我期望它能在(毫)秒内可供检索,并且在“INSERT...”查询完成后肯定直接可用。

是否有人能够说明Firebase实时数据库与其他BaaS服务的“普通”数据库有何不同呢?


12
在该页面上向下滚动一点:_“Firebase实时数据库不使用传统的HTTP请求,而是使用数据同步——每当数据发生变化时,任何连接的设备都会在毫秒内收到更新。可以提供协作和沉浸式体验,而无需考虑网络编程。”_客户端不必轮询,它们会得到数据更改的通知。 - CodeCaster
3
好的,所以区别并不在于数据存储的速度,而是数据库能够实时向客户端发送有关更改的推送通知?例如使用 Backendless,则客户端必须手动轮询数据库才能查看更改?这很有道理,但名称有点令人困惑...我猜“通知数据库”或“可观察数据库”听起来没有那么吸引人... - Magnus
1
另外,如果服务器支持HTTP长轮询,那不是有效地相同的事情吗? - Magnus
1
BadCash: Firebase在可用时使用Web Sockets,当套接字不可用时则回退到长轮询(这些天很少发生)。在Stack Overflow上,反对某人五年前选择的产品名称是不太可能有成果的,因此属于离题讨论。@CodeCaster请发布一个答案,因为你在第一条评论中已经基本掌握了它的要点。 - Frank van Puffelen
3
它不是“实时数据库”。它是“Firebase实时数据库”。这只是产品名称。你可能同样好奇“Firebase”是什么。 - Frank van Puffelen
显示剩余4条评论
2个回答

6

实时术语可能有点令人困惑,但Firebase确实与普通数据库非常不同。这里有两个主要区别。第一个是它存储数据的方式,另一个是我们访问它的方式。在普通数据库中,当后端数据更新时,我们需要刷新浏览器或Android应用程序才能获取更新的数据;而在Firebase中,我们甚至不需要刷新页面。从任何其他客户端浏览器进行的更改都将反映在所有连接的客户端上,而无需进行任何服务器端调用。


1

这与人们如何命名“实时”或是否作为BaaS提供很少有关。如果通过优化存储和检索可以更快地检索数据,则可以将其归类为实时。例如,实时数据库AerospikeSAP HanaVolt DB,memcached,redis和SQLite。

实时或内存数据库,

  1. 数据存储在RAM中。为了可靠性,数据备份在非易失性存储器上。未来可能使用nvram
  2. 成本较高。
  3. 性能高。
  4. 不需要序列化。因为数据是使用指针访问的。
  5. 使用AVL树(或其他最优数据结构)进行索引以支持范围查询。

RDBMS“常规”数据库,

  1. 数据存储在硬盘或固态硬盘中。
  2. 成本低廉。
  3. 耐用。
  4. 需要将数据序列化,因为数据存储在文件中。
  5. 使用BTree进行索引。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接