据我所知,BigTable是一个面向列的NoSQL数据库。尽管Google Cloud Datastore构建于Google的BigTable基础架构之上,但我还没有看到文档,它们明确表示Datastore本身就是一个面向列的数据库。事实上,Python API保留的名称在API中强制执行,但在数据存储区本身没有,这让我质疑Datastore反映BigTable内部工作方式的程度。例如,ndb.Model类中的验证功能在应用程序代码中强制执行,但不在数据存储中强制执行。使用ndb.Model类保存的实体可以在应用程序中的其他位置检索,该应用程序不使用Model类,已修改,添加的属性,然后保存到数据存储区而不会引发错误,直到加载到新的实例中模型类。话虽如此,说Google Cloud Datastore是一个面向列的NoSQL数据库是否安全?如果没有,那么它是什么?
答案 0 :(得分:0)
严格来说,Google Cloud Datastore是分布式多维排序地图。正如您所提到的,它基于Google BigTable,但它只是一个基础。
从高层次来看,数据存储实际上由三层组成。
<强> BigTable的强>
这是数据存储的必要基础。将行键,列键和时间戳(三维映射)映射到字节数组。数据按行字典顺序存储。
<强> Megastore的强>
此图层在BigTable之上添加交易。
<强>数据存储强>
Megastore上方的一层。允许在BigTable上作为索引扫描运行查询。此处索引不用于提高性能,但查询返回结果时需要使用索引。
此外,它还可以通过祖先查询为多行级别添加强一致性。此类查询会在执行实际扫描之前强制更新相应的索引。