面向对象数据库和文档数据库有什么区别?
我没有使用过面向对象数据库,但是当我使用文档数据库(RavenDb)时,我可以存储和读取通常的面向对象类而不会出现问题。
面向对象数据库和文档数据库有什么区别?
我没有使用过面向对象数据库,但是当我使用文档数据库(RavenDb)时,我可以存储和读取通常的面向对象类而不会出现问题。
我曾经从db4o (OODB) 切换到 RavenDB(文档型数据库)。我发现最大的区别在于对象数据库存储完整的对象,当一个对象被存储并包含另一个对象时,该子对象会以完整的形式存储,并且它是该对象的最新版本。而文档型数据库仍然存储对象,但它们的组织方式不同。聚合/根对象将存储子对象的部分,使得聚合/根对象是自包含的。当您检索根对象时,您不需要获取与之相关的对象。
一个OODB将以这种方式存储一个Team:
TeamName
City
List<Player> // The entire player objects would be stored here
文档型数据库可以通过以下方式存储一个团队:
TeamName
City
List<string> PlayerNames
球员名称将存储在此处,因为这是团队对象所需要的全部信息。
RavenDB 在这里很好地解释了文档数据库的理论: