# Hbase Replacement with DynamoDB
**Tables**
- [Cardholder Network Deal](#Cardholder-Network-Deal)
- [Prewards Events](#Prewards-Events)
## Cardholder Network Deal
Questions:
- Cost Estimate
- Determine table structure
### Schema
~~All options need a hashed key infront of the actual `partitionKey` in order to enforce uniform distribution of the data and keep reads/writes fast. [Source](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-data-upload.html).~~
Update: turns out this hashing is not necessary. CardholderId accesses are uniform across all cardholders; partition key is hashed to create uniform distributed keys.
**Option 1:**
Single query executed for each getOffers API call
Query is still a single get request as long as it's < 100/ < 4KB
```json
{
"partitionKey": "$cardholderId",
"sortKey": "$networkDealNumber"
}
```
**Option 2:**
```json
{
"partitionKey": "$cardholderId",
"sortKey": null,
"payload": ["$networkDealNumbers[]"]
}
```
### Write
**Option 1**
Read whole dynamodb table
Reconcile with written targeting partitions/targeting sets
Partial write update
**Option 2**
Update targeting process
Stop doing `insert overwrite partition`
Perform delta between new targeting set and old
Stage delta
Overwrite targeting set
Process all deltas, update dynamodb
## Prewards Events