Neo4j,如何索引并给节点ID

时间:2016-02-19 10:57:43

标签: node.js neo4j

我是neo4j的新手,我想开始用neo4j和nodejs构建一个应用程序。

根据我的理解neo4j将id添加到它创建的每个节点,并且这个id不应该在db之外使用,这意味着如果我有用户然后通过id查找用户(相同的id neo给出创造了那个用户)并不聪明。

所以问题是:

  1. 寻找用户的最佳选择是什么?电子邮件?可能是,但并非应用程序中的每件事都有一个唯一的标识符,如用户的电子邮件

  2. 我看到很少有关于uuid的帖子,我们假设我正在使用它...我可以保存保存名称为id的字段吗?或者我需要一些其他名字?

  3. 如果我想将该字段用作索引,是否需要做一些特殊的事情? (我希望id的搜索速度很快。)

  4. uuid生成一个非常长的字符串,索引该字符串是不是有点开销?索引数字更快,没有?

  5. 如果没有使用uuid您认为的其他选项?

1 个答案:

答案 0 :(得分:3)

1)最佳方式 - UUID。

2)是的。

3)否。您只需要将index添加到数据库。例如:

public int NumberOfSkills 
    {
        get 
        {
            int count = 0;
            foreach(Skill skill in ((EmployeeViewModel)SelectedRow).Skills)
            {
                if(skill.IsChecked)
                {
                    count++;
                }
            }
            return count;
        }
    }

4)<script type="text/javascript"> jQuery( document ).ready(function() { jQuery(".dl-trigger").click(function(e){ e.preventDefault(); jQuery(".dl-menu").slideToggle(150); }) }); </script> 查找更快,尤其是在Neo4j中(由于存储实现)。但是,使用UUID的索引支持查找执行得非常好,并且大多数Neo4j用户正在使用它(如果其域中没有其他唯一标识符)。

5)UUID是最佳选择。特别是当你考虑到 - 如何在集群设置中生成ID。 UUID提供了生成唯一标识符的可能性,而无需采用任何全局数据库锁等。Here您可以阅读有关UUID的更多理论信息。

现有Neo4j扩展,可以为您生成UUID。 例如 - GraphAware/neo4j-uuid
在此扩展中,您可以配置属性名称,应为其应用节点/关系UUID等等。