在neo4j社区中,neo4j DB如何解析Cypher语句,无论它是CREATE、UPDATE还是DELETE?;

在neo4j社区中,neo4j DB如何解析Cypher语句,无论它是CREATE、UPDATE还是DELETE?;,neo4j,Neo4j,我正在观看github的neo4j源代码,但我无法找到解析Cypher语句所涉及的代码,有人能帮我吗?在客户端,您可以通过调用会话对象上的适当方法来确定事务是读还是写事务: session.writeTransaction( new TransactionWork<Void>() { @Override public Void execute( Transaction tx ) { ...

我正在观看github的neo4j源代码,但我无法找到解析Cypher语句所涉及的代码,有人能帮我吗?

在客户端,您可以通过调用
会话
对象上的适当方法来确定事务是读还是写事务:

session.writeTransaction( new TransactionWork<Void>()
    {
        @Override
        public Void execute( Transaction tx )
        {
            ...
        }
    } );
return session.readTransaction( new TransactionWork<Long>()
    {
        @Override
        public Long execute( Transaction tx )
        {
            ...
        }
    } );
session.writeTransaction(新事务处理工作()
{
@凌驾
公共作废执行(交易发送)
{
...
}
} );
return session.readTransaction(新建TransactionWork()
{
@凌驾
公共长执行(事务发送)
{
...
}
} );
这主要用于确定查询是否可以转到因果集群中的读取副本。有关详细信息,请参阅


如果您正在寻找内部db实现,您应该查看该类。

您搜索该类的原因是什么?我希望在社区版本中实现HA。首先,当一个密码进入数据库时,我需要知道这个密码是要创建、更新还是删除。谢谢,是的,我正在寻找内部实现。但是我找不到任何关于DB分析cypher语句类型的代码……我将继续尝试……只是为了澄清,这里引用的驱动程序代码是程序员将要编写的代码,以向驱动程序发出信号,表明这是一个读或写事务,因此它可以相应地路由。在驱动程序级别没有进行隐式解析来确定查询是读还是写,因为这需要驱动程序包含用于密码解析的代码,并且需要驱动程序跟上新的密码实现。我们不希望有这种耦合,也不希望有一种设计需要对查询进行两次解析,一次在客户端,另一次在服务器上。