我是neo4j的新手,我想开始用neo4j和nodejs构建一个应用程序。
根据我的理解neo4j将id
添加到它创建的每个节点,并且这个id不应该在db之外使用,这意味着如果我有用户然后通过id查找用户(相同的id neo给出创造了那个用户)并不聪明。
所以问题是:
寻找用户的最佳选择是什么?电子邮件?可能是,但并非应用程序中的每件事都有一个唯一的标识符,如用户的电子邮件
我看到很少有关于uuid
的帖子,我们假设我正在使用它...我可以保存保存名称为id
的字段吗?或者我需要一些其他名字?
如果我想将该字段用作索引,是否需要做一些特殊的事情? (我希望id的搜索速度很快。)
uuid
生成一个非常长的字符串,索引该字符串是不是有点开销?索引数字更快,没有?
如果没有使用uuid
您认为的其他选项?
答案 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等等。