用于拥有数十亿条记录的地址簿的 NoSQL 数据库

NoSQL database for an address book with billions of records

哪个数据库适合存储数十亿行的地址簿(姓名、电子邮件地址、phone 号码等)? 该应用程序将是非常读取密集型的 (>99%),并且需要与分布在世界各地的服务器的高一致性。 查询将针对电子邮件地址或 phone 号码。 我目前正在考虑 HBase、Cassandra 或 MongoDB.

我认为你应该选择 MongoDB。其文档数据库和支持复制、着色功能。

Cassandra 可能是一个不错的选择。它支持多个数据中心,因此为了获得全球支持,您可以在世界各地设置几个 DC,通过让客户访问最近的数据中心来减少延迟。

对于基于电子邮件地址和 phone 号码的快速查找,您可能会将非规范化数据存储在两个 table 中,其中一个 table 使用电子邮件作为主键,另一个 table 使用 phone 数字作为主键。

您应该能够通过添加更多节点来获得所需的读取性能,因为读取性能会随着您在每个数据中心中拥有的节点数量而扩展。

现在,如果您想基于主键以外的字段对这些数据进行临时查询,那么 Cassandra 将不是一个好的选择。

由于 MongoDB 具有复制(在地理上也是冗余的)等功能使其高度可用,MongoDB 将是更好的选择。它还提供了在数据副本上配置读取首选项的工具。请参考以下 link 以根据您的业务需求决定使用哪个数据库。

https://lh5.googleusercontent.com/c_vcKz-Jo3XmIHutpOtJxBoysMt_Ny_PL-0cB4Czh4FvIbTEpe9lObaA6sTwsdHJdrtMXqOBNCNoRxYQYnIlu9MxuYIMWcl5dgUSCADFAfOXWuyWRgKWFk99Pg