Dieser Beitrag ist eine persönliche Meinung / ein Memo und repräsentiert nicht das Unternehmen, zu dem ich gehöre.
DynamoDB verfügt über eine Funktion namens ** Conditional Update **, die atomare Aktualisierungsvorgänge ermöglicht.
Zum Beispiel sieht es wie folgt aus. --Put, wenn es keinen Artikel mit einem bestimmten Schlüssel gibt --Update, wenn es ein bestimmtes Attribut eines bestimmten Elements gibt
Weitere Informationen finden Sie im DynamoDB Developer Guide (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html).
Durch Anwenden dieses ** "Setzen, wenn es keinen Artikel mit einem bestimmten Schlüssel gibt" ** und Lesen des Vorhandenseins oder Nichtvorhandenseins des Artikels wie folgt kann die Sperrverwaltung implementiert werden.
Gehen Sie mit der Taste A zu DynamoDB, um den Artikel zu platzieren. Zu diesem Zeitpunkt ist der Gegenstand von Schlüssel A
Wenn Sie es mit Python und Boto implementieren, sieht es so aus.
lock_key
def lock_key(key):
try:
dynamodb.put_item(
'TABLE_NAME',
{'key' : { "S" : key }},
expected = {
'key' : { "Exists" : False }
}
)
return True
except Exception,e:
return False
Verwenden Sie den Dateinamen als Schlüssel, um das Element in die Tabelle aufzunehmen. Gibt True zurück, wenn der Put ohne vorhandenes Element erfolgreich ist, andernfalls False.
Ich habe ein Tool geschrieben, um das Hochladen von Dateien in S3 mithilfe dieses Mechanismus zu verwalten. https://gist.github.com/imaifactory/6132f8a60461584b4613
Da Sie sich keine Gedanken über Dateien machen müssen, die nach dem erneuten Hochladen hochgeladen wurden, können Sie eine große Anzahl von Dateien parallel hochladen. Selbst wenn der Vorgang in der Mitte fehlschlägt, können Sie erneut beginnen. Tatsächlich habe ich diesen Mechanismus verwendet, um 3 bis 4 Monate lang täglich etwa 8.000 bis 10.000 Protokolldateien an S3 zu übertragen, aber ich konnte ohne Auslassungen und Duplikate arbeiten.
Die s3-Synchronisierung von Awscli ist praktisch, aber wenn Sie sich Sorgen über Auslassungs- / Vervielfältigungsmaßnahmen machen, um sie für die Produktion zu verwenden, möchten Sie sie möglicherweise so implementieren.
冪 etc.! 冪 etc.!
Recommended Posts