Skip to content

LDS Performance Improvements #279

Open
@grantland

Description

@grantland

This is a master issue for all things related to local datastore performance improvements.

  • Make LDS stop checkpointing and making copies of objects for mutable containers (Remove mutable container tracking #108)
  • Make LDS query matching more efficient by not loading every object into memory for a specified pin.
  • Make LDS use ParseObjectState and ParseUserState instead of ParseObject and ParseUser, to reduce the amount of locking required for every LDS operation.
  • Improve LDS ParseRelation tracking.
  • Update LDS database schema to allow for query matching in the database layer itself.

For anyone reaching this issue as a result of currently bad LDS performance here's our current recommendations:

  • Keep your object schemas as small as possible - the faster it is to parse them from JSON, the better.
  • Relations are currently inefficient. If you can avoid them, do so.
  • Minimize usage of any values of the following classes:
    • Collection and its subclasses
    • Map and its subclasses
    • ParseACL
    • ParseGeoPoint
  • Whenever possible, use smaller pins. Because LDS loads all objects in a single pin before evaluating a query, the smaller the pin is, the better.

See parse-community/Parse-SDK-iOS-OSX#32

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:featureNew feature or improvement of existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions