Firebase初探:实时数据库(1)
既然Firebase是做后端数据库起家的,那就自然少不了实时数据库这一块了
实时数据库,顾名思义,就是不需要客户端自己去轮询,而是每当监听的区域发生变动时,数据库都会通知客户端去更新,设备将会在毫秒级的时间内接收到数据更新
除此之外,考虑到写数据时遇到的无网络连接问题,Firebase的数据库API使用了本地缓存,使得在离线状态下也能保持读写不失败,并且会在网络恢复连接时和服务器进行同步
和常见的数据库服务器不同,Firebase使用JSON存储数据,这使得数据结构非常可观
数据结构
如前面所说,Firebase使用了JSON树来存储数据,这使得数据结构更加可观,而且也不需要考虑数据类型
但是这也带来了一个问题。我们平时构造JSON数据,多层嵌套的写法是很常见的事,以社区留言记录举例:
"record" {
"record1": {
"title": "TITLE1"
"content": "..."
"writer": "S"
"reply": {
"reply1": {
"sender": "S1",
"content": "..."
}
"reply2": {
...
}
},
"record2": {
...
}
对于该在线社区的首页来说,需要列举出各个留言的标题,但是对于多层嵌套的写法来说,就需要将整个record树下载下来了,这对于效率来说是很不利的
Firebase推荐使用平展数据结构,说白了就是将各个属性分开成不同的树来存放,一个表拆成多个表,也就是反规范化。上面的例子就可以这样写:
"record": {
"record1": {
"title": "TITLE1"
"content": "..."
"writer": "S"