Ich möchte eine große Menge von rohen Ereignisdaten speichern und abfragen. Die Architektur, die ich verwenden möchte, ist die "Data Lake" -Architektur, in der S3 die eigentlichen Ereignisdaten enthält, und DynamoDB wird verwendet, um sie zu indexieren und Metadaten bereitzustellen. Dies ist eine Architektur, die an vielen Orten über und empfohlen gesprochen wird:Ist DynamoDB als S3-Metadaten-Index geeignet?
- https://aws.amazon.com/blogs/big-data/building-and-maintaining-an-amazon-s3-metadata-index-without-servers/
- https://www.youtube.com/watch?v=7Px5g6wLW2A
- https://s3.amazonaws.com/big-data-ipc/AWS_Data-Lake_eBook.pdf
Allerdings bin ich kämpfen, um zu verstehen, wie DynamoDB für die Zwecke zu verwenden, von Abfragen der Ereignisdaten in S3. In der Verbindung zu dem AWS Blog oben, verwenden sie das Beispiel von mehreren verschiedenen Servern hergestellt Kundenveranstaltungen zu speichern:
S3 Pfadformat: [4-digit hash]/[server id]/[year]-[month]-[day]-[hour]-[minute]/[customer id]-[epoch timestamp].data
ZB: a5b2/i-31cc02/2015-07-05-00-25/87423-1436055953839.data
Und das Schema dieses Ereignis aufzuzeichnen in DynamoDB wie folgt aussieht:
Customer ID (Partition Key), Timestamp-Server (Sort Key), S3-Key, Size
87423, 1436055953839-i-31cc02, a5b2/i-31cc02/2015-07-05-00-25/87423-1436055953839.data, 1234
würde ich mag eine Abfrage wie ausführen: „Geben sie mir alle Kundenveranstaltungen von allen Servern in den letzten 24 Stunden produziert“, aber soweit ich es verstehe, ist es imp Es ist möglich, DynamoDB ohne Verwendung des Partitionsschlüssels effizient abzufragen. Ich kann den Partitionsschlüssel für diese Art von Abfrage nicht angeben.
Angesichts dieser Anforderung, sollte ich eine andere Datenbank als DynamoDB verwenden, um aufzuzeichnen, wo meine Ereignisse in S3 sind? Oder muss ich einfach ein anderes DynamoDB-Schema verwenden?
Die Architektur sieht gut aus.Sie können jedoch nicht die DynamoDB-Datenbank ohne Partitionsschlüssel abfragen.Sie müssen die gesamte DynamoDB scannen, wenn Partitionsschlüssel nicht verfügbar ist.Die Alternative wäre die Global Secondary zu erstellen Index auf dem Datum/Uhrzeit-Feld – notionquest
@notionquest thanks.Could Sie erweitern, was Sie mit Global Secondary Index meinen und wie es hier helfen würde? –
wie a Verwenden Sie elasticsearch um das Metadat zu indizieren? Sehen Sie sich den folgenden Link an: https://aws.amazon.com/blogs/database/indexing-metadata-en-index/index.html (http://aws.amazon.com/blogs/database/indexing-metadata-) [indexing-metadata-in-amazon-elasticsearch-service-using-aws-lambda-and-python] in-amazon-elasticsearch-service-using-aws-lambda-and-python /) – Payman