获取集合中所有文档的最快方法是什么?

What is the fastest way to get all documents of a collection?

我有问题。我想获取一个集合的所有文档,里面有 ~ 1 个 mio 文档。我问自己将所有文档放入集合中的最快方法是什么。是 cursor 还是 .allbatch_size 有什么推荐吗?

cursor

from arango import ArangoClient

# Initialize the ArangoDB client.
client = ArangoClient()

# Connect to database as  user.
db = client.db(<db>, username=<username>, password=<password>)

cursor = db.aql.execute('FOR doc IN <Collection> RETURN doc', stream=True, ttl=3600, batch_size=<batchSize>)
collection =  [doc for doc in cursor]

.all - 使用自定义 HTTP 客户端

from arango import ArangoClient
from arango.http import HTTPClient

class MyCustomHTTPClient(HTTPClient):
    REQUEST_TIMEOUT = 1000

# Initialize the ArangoDB client.
client = ArangoClient(
    http_client=MyCustomHTTPClient())

# Connect to database as  user.
db = client.db(<db>, username=<username>, password=<password>)

collec = db.collection('<Collection>')
collection = collec.all()

如果您想要内存中的所有文档,那么 .all 将是最快的,因为它使用库的方法来获取所有经过优化的结果。

如果您可以在每个文档传入时对其进行处理,那么 cursor 是避免内存开销的最佳方法。

但决定这一点的最佳方法是 运行 测试测量时间,因为许多因素都会影响速度,例如连接类型和数据库速度、计算机内存量等. 你给出的例子看起来很简单,可以很快地进行这样的测量。