【问题标题】:Benchmark on different OrientDb Graphic API不同 OrientDb 图形 API 的基准测试
【发布时间】:2018-01-17 02:04:57
【问题描述】:

正如 orientdb API (http://www.orientdb.org/images/orientdb-api-stack.png) 中所述,我们可以使用很多 API 来创建图形顶点和边。有人有不同 OrientDb 图形 API 的基准测试吗?

我在本地测试,每次我在三个顶点之间插入三个顶点和两条边。

方式1(使用sql):

BEGIN
    LET a1 = CREATE VERTEX ip SET title = '192.168.0.1'
    LET a2 = CREATE VERTEX ip SET title = '192.168.0.2'
    CREATE EDGE r FROM a1 TO a2 SET risk_id = '111', app_id = '222', scenario_id = '333', occur_time = 'ffff'
COMMIT RETRY 1
RETURN [a1, a2]

方式 2(使用类似 TickerPop API):

Vertex vertex1 = graph.addVertex(
    "class:" + node.getType(),
    "title", node.getValue()
);
vertex1.addEdge(
    "class:" + entry.right.getRelation(),
    (OrientVertex) vertex2,
    new Object[] {
            "risk_id", context.getRiskId(),
            "app_id", context.getAppId(),
            "scenario_id", context.getScenarioId(),
            "occur_time", context.getAckTime().getTime()
    }
)

看起来方式 1 的吞吐量很高。有什么快速的方法可以通过 OrientDB api 插入它们吗?谢谢。

【问题讨论】:

    标签: orientdb


    【解决方案1】:

    您是否已经尝试过OrientDB batch insert API?请阅读 JavaDoc 以了解是否适合您的用例。

    【讨论】:

    • 是的,我之前看过文档。根据文档,看起来很难适应我的场景:1.它只支持单个顶点类和边类,但我有很多顶点类和边类。如果我在 Vertex 上使用另一个属性来区分它们,不知道会不会影响查询性能? 2.“这个API是为快速批量导入简单图形而设计的,从一个空的(或不存在的)DB开始。”,它实际上是一个OLTP场景,每次都会产生数据。如果我的应用重新启动,它不是一个空数据库。不知道我的理解对不对?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多