获取集合中所有文档的最快方法是什么?
What is the fastest way to get all documents of a collection?
我有问题。我想获取一个集合的所有文档,里面有 ~ 1 个 mio 文档。我问自己将所有文档放入集合中的最快方法是什么。是 cursor
还是 .all
? batch_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
是避免内存开销的最佳方法。
但决定这一点的最佳方法是 运行 测试测量时间,因为许多因素都会影响速度,例如连接类型和数据库速度、计算机内存量等. 你给出的例子看起来很简单,可以很快地进行这样的测量。
我有问题。我想获取一个集合的所有文档,里面有 ~ 1 个 mio 文档。我问自己将所有文档放入集合中的最快方法是什么。是 cursor
还是 .all
? batch_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
是避免内存开销的最佳方法。
但决定这一点的最佳方法是 运行 测试测量时间,因为许多因素都会影响速度,例如连接类型和数据库速度、计算机内存量等. 你给出的例子看起来很简单,可以很快地进行这样的测量。