标签: arangodb

大量插入杀死 arangod(好吧,几乎)

我想知道有人遇到过这个:

通过 AQL 插入文档时,我可以轻松杀死我的 arango 服务器。例如

FOR i IN 1 .. 10
  FOR u IN users
    INSERT {
        _from: u._id,
        _to: CONCAT("posts/",CEIL(RAND()*2000)),
        displayDate: CEIL(RAND()*100000000)
    } INTO canSee
Run Code Online (Sandbox Code Playgroud)

(其中用户包含 500000 个条目),会发生以下情况

  • canSee 变得完全锁定(也不再读取)
  • 内存消耗上升
  • arangosh 或 Web 控制台变得无响应
  • 失败 [ArangoError 2001: 无法连接]
  • 服务器仍在运行,访问集合会超时
  • 大约需要 5-10 分钟,直到服务器恢复,我才能再次访问该集合
  • 访问任何其他集合工作正常

好吧,我正在创建很多条目,并且 AQL 可能会以批量执行的方式实现。通过 db.save 方法进行写入时,它可以工作,但速度要慢得多。

另外我怀疑这可能与预写缓存填满有关。

但是,有什么办法可以解决这个问题吗?将大量条目写入数据库不一定会杀死它。

日志说

DEBUG [./lib/GeneralServer/GeneralServerDispatcher.h:411] shutdownHandler called, but no handler is known for task

DEBUG [arangod/VocBase/datafile.cpp:949] created datafile '/usr/local/var/lib/arangodb/journals/logfile-6623368699310.db' of size 33554432 and page-size 4096

DEBUG [arangod/Wal/CollectorThread.cpp:1305] closing full …
Run Code Online (Sandbox Code Playgroud)

arangodb

2
推荐指数
1
解决办法
420
查看次数

arangodb中的最大数据库数

我是Arango DB的新用户,我目前正在为我的项目进行评估.有人可以告诉我,您可以在Arango DB中创建的最大数据库数是多少?

谢谢.

arangodb

2
推荐指数
1
解决办法
909
查看次数

使用ArangoDb/OrientDb进行分层数据模型和文档搜索:是正确的解决方案吗?

我正在开发一个文档管理软件,我正在评估存储和搜索数据的noSql数据库.

总结当项目在目录和子目录中组织时,软件就像文件系统一样.

树的每个项目都可以有n个属性用于过滤和排序.

物品也可以最终与某种其他关系(父母除外)相互联系.

项目数量可能相对较大(数百万),并且应用程序的杀手级功能必须在检索数据(使用过滤器和按属性排序)方面具有恒定的性能,而不依赖于数据库增长.

我需要3个关键功能:

  • 获取文件夹的直接子项.结果必须是每个文档属性的可分页,可排序和可过滤的

  • 获取文件夹的所有子项(子树的所有项).结果必须是每个文档属性的可分页,可排序和可过滤的

  • 获取文件夹的所有父母

我是noSql中的新手,实际上我使用的是rdbms(Sql Server),但我遇到了性能问题以及由文档属性的固定架构引起的所有限制.我正在评估OrangoDb或OrientDb,因为我认为它的功能(面向文档和面向图形)可能是我设计需求的最佳解决方案.

你能帮助我,给我一个关于设计数据库和查询这个3任务的建议吗?

铌.我需要查询的结果返回一个数据集,其中包含每个属性的列:

Es. doc1: p1: v1, p2: v2
    doc2: p1: v1, p3: v3

result:
    name | p1 | p2 | p3
    doc1   v1   v2   null
    doc2   v1   null v3
Run Code Online (Sandbox Code Playgroud)

我在想设计一个项目:

{ 
  "_id": "_myItemId",
  "name`enter code here`" : "Item1",
  "itemType": "root / folder / file"   
  "parentItemId": "",
  "properties" : [ 
    { name: "Property1", formatType: 0, formatMask: "", value: "Value1" }, 
    { name: "Property2", formatType: 0, formatMask: "", value: "Value2" }, …
Run Code Online (Sandbox Code Playgroud)

nosql graph-databases document-database orientdb arangodb

2
推荐指数
1
解决办法
868
查看次数

如何在ArangoDb中的下面的json文档中进行全文索引和搜索?

{
"batters":
    {
    "batter":[
            { "id": "1001", "type": "Regular" },
            { "id": "1002", "type": "Chocolate" },
            { "id": "1003", "type": "Blueberry" },
            { "id": "1004", "type": "Devil's Food" }
    ]
    },
    "topping":[
            { "id": "5001", "type": "None" },
            { "id": "5002", "type": "Glazed" },
            { "id": "5005", "type": "Sugar" },
            { "id": "5007", "type": "Powdered Sugar" },
            { "id": "5006", "type": "Chocolate with Sprinkles" },
            { "id": "5003", "type": "Chocolate" },
            { "id": "5004", "type": "Maple" }
     ]
}
Run Code Online (Sandbox Code Playgroud)

基本上要在这里进行全文搜索,我需要对"batters.batter"以及"batters.topping"进行索引,即两个属性.如何处理这种全文搜索.请解释一下该方法,我将通过REST …

arangodb arangodb-php arangojs

2
推荐指数
1
解决办法
198
查看次数

在 ArangoDB 中快速向文档添加边缘计数

不太复杂:我想计算每个文档的边缘并将数字保存在文档中。我提出了两个有效的查询;不幸的是,因为我有数百万条边,所以两者都非常慢。是否有一种更快的方法来使用存储边数的属性来更新文档?(只是某个时间点的计数)

功能正常但速度缓慢的 AQL 查询:

FOR doc IN Documents
    LET inEdgesCount  = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'inbound', maxDepth:1})
    LET outEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'outbound', maxDepth:1})
    UPDATE doc WITH {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents
Run Code Online (Sandbox Code Playgroud)

或者:

FOR e IN Edges
    COLLECT docId = e._to WITH COUNT INTO counter
    UPDATE SPLIT(docId,'/')[1] WITH {inEdgeCount: counter}
Run Code Online (Sandbox Code Playgroud)

(然后对出站边缘重复)


顺便说一句,有什么方法可以查看查询速度(例如每秒执行 FOR 的次数)或完成百分比吗?我一直试图通过使用有限的查询来判断速度,但所需的时间似乎并不是线性扩展的。

graph-databases arangodb

2
推荐指数
1
解决办法
1303
查看次数

在 AQL 中返回带有动态键的对象

我可以返回类似以下内容吗?

{
"c/12313" = 1,
"c/24223" = 2,
"c/43423" = 3,
...
}
Run Code Online (Sandbox Code Playgroud)

来自 AQL 查询?这个想法是这样的(这个非工作代码):

for c in my_collection
return { c._id : c.sortOrder }
Run Code Online (Sandbox Code Playgroud)

sortOrder我的文件中的一些财产在哪里?

arangodb

2
推荐指数
1
解决办法
1007
查看次数

如何查询 ArangoDB 中的修订历史记录?

_rev在 ArangoDB 中创建的每个文档中都看到了 ,但我还没有看到有关使用这些修订来访问文档的更改历史记录的任何信息。更具体地说,如何查询特定文档的修订历史记录,以便及时查看以前的版本甚至特定版本?

nosql graph-databases arangodb aql

2
推荐指数
1
解决办法
1698
查看次数

在文档中创建用户定义的键

我正在尝试使用用户定义的键创建文档,如下所示:

package main

import (
    "fmt"
    driver "github.com/arangodb/go-driver"
    "github.com/arangodb/go-driver/http"
)

type doc struct {
    _key string `json:"_key"`
}

func main() {
    conn, _ := http.NewConnection(http.ConnectionConfig{
        Endpoints: []string{"http://localhost:8529"},
    })

    c, _ := driver.NewClient(driver.ClientConfig{
        Connection: conn,
        Authentication: driver.BasicAuthentication("root", "test"),
    })

    db, _ := c.CreateDatabase(nil, "dbname", nil)

    // delete the collection if it exists; then create it
    options := &driver.CreateCollectionOptions{
        KeyOptions: &driver.CollectionKeyOptions{
            AllowUserKeys: true,
        },
    }
    coll, _ := db.CreateCollection(nil, "collname", options)

    meta, _ := coll.CreateDocument(nil, doc{ _key: "mykey" })

    fmt.Printf("Created document with …
Run Code Online (Sandbox Code Playgroud)

go arangodb

2
推荐指数
1
解决办法
465
查看次数

AQL查询真的很慢(~20秒)

以下查询执行大约需要20秒:

FOR p IN PATHS(locations, connections, "outbound", { maxLength: 1 }) FILTER p.source._key == "26094" RETURN p.vertices[*].name
Run Code Online (Sandbox Code Playgroud)

我相信这是一个简单的查询(并且数据库不是那么大)它应该执行得相当快......我必须做错了...这是查询结果:

==> [object ArangoQueryCursor - count: 286, hasMore: false]
Run Code Online (Sandbox Code Playgroud)

locations(顶点)集合有23753页的文件,以及connections(边)收藏有123414页的文件.

我也尝试过滤,_id但性能有点相同.

我能做些什么来获得更好的表现吗?

这是查询的.explain()报告:

 { 
  "plan" : { 
    "nodes" : [ 
      { 
        "type" : "SingletonNode", 
        "dependencies" : [ ], 
        "id" : 1, 
        "estimatedCost" : 1, 
        "estimatedNrItems" : 1 
      }, 
      { 
        "type" : "CalculationNode", 
        "dependencies" : [ 
          1 
        ], 
        "id" : 2, 
        "estimatedCost" : 2, …
Run Code Online (Sandbox Code Playgroud)

arangodb aql

1
推荐指数
1
解决办法
389
查看次数

插入时文档属性的顺序

如果我没有错,在插入新文档时,ArangoDB不关心对象属性的顺序/顺序,有没有办法保证属性的顺序与它们在json对象中声明的顺序相同?

arangodb

1
推荐指数
1
解决办法
56
查看次数