📜  实时数据库与 Firestore(1)

📅  最后修改于: 2023-12-03 15:09:27.088000             🧑  作者: Mango

实时数据库与 Firestore

介绍

实时数据库和 Firestore 都是 Google 提供的云端数据库服务。实时数据库是 Firebase 的一个组件,用于实时存储和同步数据,使用实时数据库可以构建实时应用程序。Firestore 是 Google Cloud 平台提供的 NoSQL 文档型数据库,使用它可以轻松地处理大量结构化的文档数据,可构建可靠的 Web、移动和 IoT 应用程序。

特点
实时数据库
  • 实时同步:实时数据库提供实时同步的能力,这意味着对数据库的任何更改都可以立即在所有连接到该数据库的客户端之间同步。

  • 实时查询:实时数据库还支持实时查询,这意味着只要数据发生更改,您的查询结果就会立即更新。

  • 高可用性:实时数据库是 Google Firebase 的一部分,该平台建立在 Google 的 Infrastrastructure-as-a-Service(IaaS)基础之上,拥有高度可靠的基础架构,实时数据库具有高可用性。

Firestore
  • 强类型:Firestore 提供类型安全的 API,可以轻松地处理有结构的数据。

  • 批量写入:Firestore 可以执行批量写入操作,这可以使您的应用程序更快地更改大量文档。

  • 事务:Firestore 可以执行事务操作,这意味着如果多个客户端请求同时更新某个文档,Firestore 会确保事务顺序并保持文档的积极一致性。

代码示例
实时数据库
// 创建实时数据库引用
DatabaseReference database = FirebaseDatabase.getInstance().getReference();

// 写入数据
database.child("users").child("user1").setValue("张三");
database.child("users").child("user2").setValue("李四");

// 读取数据
database.child("users").addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
      String username = childSnapshot.getValue(String.class);
      System.out.println(username);
    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    System.out.println(databaseError.getMessage());
  }
});
Firestore
// 创建 Firestore 引用
FirebaseFirestore db = FirebaseFirestore.getInstance();

// 写入数据
Map<String, Object> user = new HashMap<>();
user.put("name", "张三");
user.put("age", 18);
db.collection("users").document("user1").set(user);

// 读取数据
db.collection("users")
  .get()
  .addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
      for (QueryDocumentSnapshot document : task.getResult()) {
        String name = document.getString("name");
        int age = document.getLong("age").intValue();
        System.out.println(name + " " + age);
      }
    } else {
      System.out.println(task.getException().getMessage());
    }
  });
结论

实时数据库和 Firestore 都是优秀的数据库服务,它们非常适合构建实时性强、可扩展性好、高效稳定的 Web、移动和 IoT 应用程序。实时数据库适合处理实时数据,而 Firestore 则适合处理大量结构化的文档数据。无论您选择那一种服务,都可以依赖它们提供的高可用、高扩展、高性能存储服务来构建您的应用程序。