Data structures 使用Couchebase存储分类法(生命树),最佳实践

Data structures 使用Couchebase存储分类法(生命树),最佳实践,data-structures,tree,couchbase,multi-level,nosql,Data Structures,Tree,Couchbase,Multi Level,Nosql,我之前问过一个关于这个()的问题,当时我正在使用MySQL,但在有人建议使用MongoDB之后,我决定四处看看并安装Couchbase。(有趣的是,在我安装Couchbase后,geraldss在我对上一个问题的评论中建议使用Couchbase) 我将把每条鱼的王国、门、类等存储在一个文档中。但我也希望有文档来帮助实现多级下拉列表 我希望第一个下拉列表是5王国,然后下一个下拉列表将填充该王国可用的门,然后第三个下拉列表将填充该门的类,依此类推 现在我正试图找到一种最实用的方法来储存这个 我应该创

我之前问过一个关于这个()的问题,当时我正在使用MySQL,但在有人建议使用MongoDB之后,我决定四处看看并安装Couchbase。(有趣的是,在我安装Couchbase后,geraldss在我对上一个问题的评论中建议使用Couchbase)

我将把每条鱼的王国、门、类等存储在一个文档中。但我也希望有文档来帮助实现多级下拉列表

我希望第一个下拉列表是5王国,然后下一个下拉列表将填充该王国可用的门,然后第三个下拉列表将填充该门的类,依此类推

现在我正试图找到一种最实用的方法来储存这个

我应该创建一个称为分类法的大型文档,还是应该创建关于每个门的多个文档(仍然是大型文档),或者其他什么

帮助我创建文档的小PHP数组示例:

我该怎么办?创建一个文档是否是一个好方法?你怎么储存这个


(请不要结束这个问题,我正在努力将我的想法从关系数据库转向基于文档的数据库,我正在努力解决这个问题)

您应该记住,Couchbase不支持文档的部分更新。因此,如果只使用一个文档更新,它将花费很长时间,同时会阻止其他更新操作。所以我会选择不同的文件。谢谢你,罗宾。为此,我将尝试使用多文档方法,但我听说最好避免在NoSQL中使用类似联接的查询,这会带来问题,因为一个文档可能有13个我需要获取的父级(级别),我应该创建多个请求以获取完整的层次结构。你是对的,在NoSQL中联接通常是昂贵的。在Couchbase中,您可以控制要加入的集群节点特定文档类型的存储位置。因此,您只需在一个节点上进行连接,而不必跨整个集群进行连接。
  "Fungi" => array(
    "type"=>"kingdom",
    "origin" => "Latin, derived from Greek - sp(h)onges, sponges",
    "description" => "Obtain food through absorption, excrete enzymes for digestion",
    "example" => "molds, mushrooms, lichens",
    "Phylum" => array(),
  ),
  "Plantae" => array(
    "type"=>"kingdom",
    "origin" => "Latin - plant",
    "description" => "Multicellular organisms that are autotrophic",
    "example" => "mosses, ferns, grasses, flowers, trees.",
    "Phylum" => array(),
  ),
  "Animalia" => array(
    "type"=>"kingdom",
    "origin" => "Latin - breath, soul",
    "description" => "Multicellular organisms that develop from the fertilization of an egg by a sperm",
    "example" => "sponges, worms, insects, fish, birds, humans",
    "Phylum" => array( //32 total, 12 here
      "Porifera" => array(
        "name" => "Porifera",
        "type" => "Phylum",
        "origin" => "Latin - to bear pores",
        "description" => "Sponges",
      ),
      "Cnidaria" => array(
        "name" => "Cnidaria",
        "type" => "Phylum",
        "origin" => "Greek - nettle",
        "description" => "",
        "Class" => array(
          "Hydrozoa" => array(
            "name" => "Hydrozoa",
            "description" => "Hydras",
            "Order" => array( //Multiple Order
              "Family" => array( //Multiple Family for each Order
                "Genus" => array( //Multiple Genus for each Family

                ),
              ),
            ),
          ),