Memo vs Serach Attributes vs Visibility Records

Read teh following :
https://community.temporal.io/t/event-store-vs-visibility-store-questions/1285/2
https://community.temporal.io/t/whats-the-difference-between-history-and-visibility-record/286
https://javadoc.io/doc/io.temporal/temporal-sdk/latest/io/temporal/client/WorkflowOptions.Builder.html#setMemo-java.util.Map-

…and still confused :

  1. Is 'Visibility Records" same as Search Attributes and Memos combined ?
  2. What exactly is the difference between Search Atributes and Memos ? ( search attributes can be changed/deleted after the workflow has started. but Memos cannot be changed ? )
  3. Visibility Records can be stored on a different database right ? ( Different from teh database that stores Even histories )
  1. Is 'Visibility Records" same as Search Attributes and Memos combined ?

Yes, visibility record contains search attributes and Memos.

  1. What exactly is the difference between Search Atributes and Memos ? ( search attributes can be changed/deleted after the workflow has started. but Memos cannot be changed ? )

Two main differences:

  • List queries can use search attributes to filter workflows. I.e. search attributes are indexed. Memos content is returned by list query, but cannot be used as part of the search predicate.

  • Search attributes have a fixed set of types: (String, Keyword, Int, Double, Bool, Datetime). Memo map values can be of any type that can be serialized and deserialized by configured DataConverter (the same used for arguments and results of workflows and activities).

  1. Visibility Records can be stored on a different database right ? ( Different from teh database that stores Even histories )

Yes. They can be stored in a different DB. But if you want to use custom search attributes only Elasticsearch is supported.

Thank you vey much Maxim… was very helpful as always