Skip to content

Requirements AzureData

Colby Williams edited this page Mar 14, 2018 · 3 revisions

Phase 0: Refactor

  • Cosmos DB DocumentDB/SQL API Coverage
  • Migrate code that can be reused by other SDKs to AzureCore
  • Support full Cosmos DB DocumentDB/SQL API
  • TokenProvider updates to support multiple Auth/Resource Token requirements
  • Add metadata to response object
  • Implement optimistic concurrency control (OCC) by adding appropriate Headers
    • If-None-Match on all GET
    • If-Modified-Since on GET (ignored when If-None-Match is specified)
    • If-Match on PUT and DELETE
  • Conflict resolution
    • Latest wins (silent)
    • Mine wins (silent)
    • Manual (callback)
  • Save tokens to Keychain (AzureCore)
  • Querying resources
    • Support for "raw" SQL queries (validation?)
    • Query type and custom syntax language for chaining together conditions
  • Overrides for partition keys

Phase 1: Data Persistence

  • Offline persistence is enabled by default (for all resources)
  • User has option to disable offline persistence (for all resources)
  • Data is successfully written remotely before caching locally
  • Only READING is supported while device is offline, WRITE throws a (useful) error
  • Add fromCache to response object when returning data from cache (device offline)
  • Simple API to Purge entire data cache

Phase 2: Offline Write

  • Add WRITE support when offline
  • Queue writes when offline
  • Automatically push any local changes as soon as device comes back online
    • Send global notification to let user know data changed

Phase 3: Granular Persistence Control

  • User has option to disable offline persistence for collections only (documents would respect parent collection option persistence)

Phase 4: Time-To-Live

  • Add Time-To-Live (TTL) functionality to improve GET performance for non-volatile data

Phase N: Change Feed