private RideResponse recordRide(string rideId, string username, Unicorn unicorn) { //The client represents a connection to dynamo db's management plane using (var client = new Amazon.DynamoDBv2.AmazonDynamoDBClient()){ //create a data context var context = new Amazon.DynamoDBv2.DataModel.DynamoDBContext(client); //populate the ride object Ride r = new Ride(); r.Unicorn = unicorn; r.RideId = rideId; r.User = username; r.RequestTime = DateTime.UtcNow; r.UnicornName = unicorn.Name; //Now persist it to DynamoDB, it is async but here we are waiting so that we know it has completed or failed context.SaveAsync(r).GetAwaiter().GetResult(); //now build the response object var rr = new RideResponse(); rr.ETA = $"30 seconds"; rr.Unicorn = unicorn; rr.RideId = rideId; rr.Rider = username; rr.UnicornName = unicorn?.Name; return(rr); } }
public void FromDbEntryPerformance() { var count = 10000; var options = new DynamoDBProviderOptions("proto_actor_events", "proto_actor_snapshots"); var provider = new DynamoDBProvider(_client, options); var dynamoDBContext = new DynamoDBContext(_client); var fromDocumentMI = typeof(DynamoDBContext).GetMethods().First(m => m.Name == "FromDocument" && m.GetParameters().Count() == 1); var toDocumentMI = typeof(DynamoDBContext).GetMethods().First(m => m.Name == "ToDocument" && m.GetParameters().Count() == 1); var obj = SomeObj.GetMe(); var doc = dynamoDBContext.ToDocument(obj); var stopwatch = new Stopwatch(); stopwatch.Start(); for (var i = 0; i < count; i++) { // Simulate what provider does var dataType = Type.GetType(typeof(SomeObj).AssemblyQualifiedName); var data = dynamoDBContext.FromDocumentDynamic(doc, dataType); } stopwatch.Stop(); // Console.WriteLine(String.Format("FromDbEntryPerformance: Total: {0}, Per item: {1}", stopwatch.Elapsed.TotalMilliseconds, stopwatch.Elapsed.TotalMilliseconds / count)); Assert.True(stopwatch.Elapsed.TotalMilliseconds / count < 0.05); }
public DynamoDBProvider(IAmazonDynamoDB dynamoDBClient, DynamoDBProviderOptions options) { if (dynamoDBClient == null) { throw new ArgumentNullException(nameof(dynamoDBClient)); } _options = options ?? throw new ArgumentNullException(nameof(options)); _dynamoDBContext = new DynamoDBContext( dynamoDBClient, new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2, ConsistentRead = true } ); _eventsTable = Table.LoadTable(dynamoDBClient, options.EventsTableName, DynamoDBEntryConversion.V2); _snapshotsTable = Table.LoadTable(dynamoDBClient, options.SnapshotsTableName, DynamoDBEntryConversion.V2); }
public TicketService(ITicketsDatabaseSettings settings) { _client = new AmazonDynamoDBClient(); _context = new Amazon.DynamoDBv2.DataModel.DynamoDBContext(_client); }