2017-06-28 3 views
0

Ich schreibe eine Software, die eine große Anzahl von Geräten über 30k verfolgt. (Wie Uber aber die Lage Informationen stammen aus verschiedenen Arten von GPS-Geräten)Speichern der lat langen Informationen eines bewegten Objekts in DynamoDB

  1. ich die Standortinformationen der Geräte alle 5 Sekunden
  2. Jetzt muss ich alle Informationen in der Datenbank halten, so dass es sein kann, zur Verfolgung von Geräten oder zum Auffinden von Geräten in Ihrer Nähe.

Hier ist, was ich geplant haben:

  1. ich eine Tabelle in Dynamo habe db Livetrack genannt, die die neuesten Standortinformationen der einzelnen Geräte
  2. Daten enthalten deviceid, tiestamp, Breite, Länge hält

Wie soll ich die DynamoDB Tabelle gestalten, dass es gerecht zu werden 30000 schreibt/60000 liest alle 5 Sekunden

  • Was sollte meine Lese- und Schreibkapazität Einheiten sein.
  • Ich werde AWS Cloud DynamoDB verwenden, sobald die Entwicklung abgeschlossen ist
  • Soll ich DynamoTable nicht verwenden und Zwischenspeichern wie Redis verwenden?

In lokaler DynamoDB Installation Wenn ich nicht in der Lage bin 6 Geräte Daten und Lesedaten auf dem Gerät

gleichzeitig erstellt

Meine Livetrack-Daten werden alle 5 Sekunden zu schreiben:

from __future__ import print_function # Python 2/3 compatibility 
 
import boto3 
 

 
dynamodb = boto3.resource('dynamodb', region_name='us-west-2', endpoint_url="http://localhost:8000") 
 

 

 
table = dynamodb.create_table(
 
    TableName='LocationOne', 
 
    KeySchema=[ 
 
     { 
 
      'AttributeName': 'deviceid', 
 
      'KeyType': 'HASH' #Partition key 
 
     } 
 
     
 
    ], 
 
    AttributeDefinitions=[ 
 
     { 
 
      'AttributeName': 'deviceid', 
 
      'AttributeType': 'S' 
 
     } 
 
    ], 
 
    ProvisionedThroughput={ 
 
     'ReadCapacityUnits': 10, 
 
     'WriteCapacityUnits': 10 
 
    } 
 
)

Antwort

0

Möglicherweise müssen Sie die Funktion DynamoDB Autoscaling verwenden, die auf dem lokalen Dynamodb möglicherweise nicht verfügbar ist. Mit DynamoDB-Autoscaling können Drosselungsprobleme skaliert und verhindert werden.

DynamoDB automatische Skalierung verwendet den AWS Anwendung Auto Scaling Dienst dynamisch bereitgestellten Durchsatzkapazität in Ihrem Namen anpassen, in Reaktion auf aktuelle Verkehrsmuster. Dadurch kann eine Tabelle oder ein globaler Sekundärindex seine zugewiesene Lese- und Schreibkapazität auf erhöhen, um einen plötzlichen Anstieg des Datenverkehrs ohne Drosselung zu bewältigen. Wenn die Workload abnimmt, verringert die automatische Skalierung der Anwendung den Durchsatz , so dass Sie nicht für ungenutzte bereitgestellte Kapazität bezahlen.

Best Practice: -

Als bewährte Methode, stellen Sie sicher, dass deviceid nicht sequentiell ist. Damit werden die Daten über die Partition verteilt. Dies hilft sicherzustellen, dass alle Lese-/Schreibvorgänge nicht dieselbe Partition verwenden, die für den obigen Anwendungsfall erforderlich ist.

Refer this blog for designing the best partition key

Verwandte Themen