Every record in your database should be CRATA - Complete, Relevant, Accurate, Timely, and Accessible. I've always been intrigued by what "Timely" really means, bottom line it always comes down to when stuff happens!
Synchronous communication is the real-time interaction between two endpoints. In the human world, this is like a conversation, or online meeting using audio or video. That is the definition I would normally use, but life is not that simple. There are other definitions of synchronous that are worth investigating:
When a user cannot perform the next operation until the current one has completed. Like when your mouse pointer refuses to move until "something" finishes.
- In data communications, synchronous transmission is when no start and stop elements are added to each data byte. This means both ends need mechanisms to determine the exact transmission speed.
- In Salesforce, Synchronous APEX is when a block of code is executed continuously and does not wait for available resources.
- And then there are all the usual meanings - see the dictionary.
As you might expect, asynchronous is largely the opposite, where one system has to wait to receive information. Real-world examples are watching a movie and waiting for a train. Not to be outdone, asynchronous has other meanings as well:
When a user can do multiple tasks simultaneously without waiting for other tasks to finish.
- In data communications, asynchronous transmission is where each data byte has a start and stop bit so the destination system can better handle transmission speed variations.
- In Salesforce, asynchronous APEX calls (called future methods) are queued and run on separate execution threads. They are decoupled from the calling action and individually wait for responses.
- And there are others.
To add to the confusion, in databases, the term "sync" or "synch", means to batch update the data in one system with the data in another, which actually describes an asynchronous process! Maybe we should be doing "asyncs" instead. Interestingly, because synchronous systems are faster by design, they are more likely to have a single source of data, and therefore, eliminate the need to have schedulers running frequent batch updates.
Clearly, "timely" is not waiting for a batch job to complete before we see the most recent data. You can see that timely data is the ability to access your data using synchronous processes (real-time).