Ich habe einen Artikel gefunden, der besagt, dass es einige Zeit dauert, die Daten in der in geth (go-ethereum) verwendeten levelDB zu registrieren, wenn die Datenmenge bei Verwendung von Ethereum als private Blockchain zunimmt. Da ist so etwas. Ich habe es tatsächlich gemessen
Der Schlüssel registriert 1 Million Elemente, die zu geeignet sind, z. B. geeignete Daten für die Verarbeitungsnummer und den Wert. Die für jeweils 100 Fälle erforderliche Verarbeitungszeit wurde gemessen und es wurde bestätigt, ob die Verarbeitungszeit zunahm.
Ich habe nicht nur levelDB, sondern auch mongoDB ausprobiert
Registrieren Sie Daten mit dem folgenden Code
import time
import leveldb
# Testdaten: 750 Bytes
inputData = '{"_ id": "ObjectId (\ 5e3b4dd825755df3f15a2d17 \") "," coediting ": False," comment_count ": 0," created_at ":" 2020-02-05T20: 20: 10 + 09: 00 ", "Gruppe": Keine, "ID": "6ed1eec1d6fba127a863", "Likes_Count": 0, "Privat": False, "Reactions_Count": 0, "Tags": [{"Name": "Python", "Versionen": []}, {"Name": "MongoDB", "Versionen": []}, {"Name": "Python3", "Versionen": []}, {"Name": "Pymongo", "Versionen" : []}], "title": "Betrieb von mongoDB mit Python-Part 6: aggreg-", "updated_at": "2020-02-05T20: 20: 10 + 09: 00", "url": "https://qiita.com/bc_yuuuuuki/items/6ed1eec1d6fba127a863", "page_views_count": 96, "tag1": "Python", "tag2": "MongoDB", "tag3": "Python3", "tag4": "pymongo", "tag5": "", "tag_list": ["Python", "MongoDB", "Python3", "pymongo"], "stock_count": 0} '
start = time.time()
db = leveldb.LevelDB("measurement_test")
start = time.time()
for i in range(1,1000001):
db.Put(i.to_bytes(4, 'little'), inputData.encode('utf-8'))
if i % 100 == 0:
end = time.time()
print("{0}:{1}".format(i,end-start))
start = end
Verarbeitungsergebnis
Gemessen mit dem folgenden Code
from mongo_sample import MongoSample
import time
mongo = MongoSample("db","measurement")
# Testdaten: 750 Bytes
inputData = '{"_ id": "ObjectId (\ 5e3b4dd825755df3f15a2d17 \") "," coediting ": False," comment_count ": 0," created_at ":" 2020-02-05T20: 20: 10 + 09: 00 ", "Gruppe": Keine, "ID": "6ed1eec1d6fba127a863", "Likes_Count": 0, "Privat": False, "Reactions_Count": 0, "Tags": [{"Name": "Python", "Versionen": []}, {"Name": "MongoDB", "Versionen": []}, {"Name": "Python3", "Versionen": []}, {"Name": "Pymongo", "Versionen" : []}], "title": "Betrieb von mongoDB mit Python-Part 6: aggreg-", "updated_at": "2020-02-05T20: 20: 10 + 09: 00", "url": "https://qiita.com/bc_yuuuuuki/items/6ed1eec1d6fba127a863", "page_views_count": 96, "tag1": "Python", "tag2": "MongoDB", "tag3": "Python3", "tag4": "pymongo", "tag5": "", "tag_list": ["Python", "MongoDB", "Python3", "pymongo"], "stock_count": 0} '
start = time.time()
path = "measurement.txt"
with open(path, "w") as out:
for i in range(1,1000001):
mongo.insert_one({str(i):inputData})
if i % 100 == 0:
end = time.time()
out.write("{0}:{1}\n".format(i,end-start))
start = time.time()
Verarbeitungsergebnis
In Bezug auf die Verteilung der Verarbeitungsergebnisse sind sowohl levelDB als auch mongoDB im Allgemeinen in einer bestimmten Verarbeitungszeitzone verteilt. Es gibt einige, die eine hervorragende Verarbeitungszeit erfordern, aber da es nur wenige Fälle gibt, kann nicht gesagt werden, dass sich die Schreibgeschwindigkeit verschlechtert hat.
Wenn sich die Schreibgeschwindigkeit in Abhängigkeit von der Datenmenge verlangsamt, steigt die Verteilung nach rechts oder zeichnet eine Kurve nach rechts oben. Diese Überprüfung führte jedoch nicht zu einer solchen Verteilung.
Da die detaillierte Umgebung und Datenmenge des gelesenen Artikels unbekannt war, bleibt unklar, ob der Inhalt des Artikels, auf den Bezug genommen wird, wahr ist. Außerdem ist geth natürlich eine Go-Sprache, und ich fand es umständlich, eine Go-Umgebung zu erstellen, also habe ich es mit Python versucht. Dieser Bereich kann auch Auswirkungen haben, daher denke ich, dass ich weiter nachforschen werde.
Ich bin froh, dass ich ein wenig über levelDB gelernt habe.
Recommended Posts