Will dfuseeos store a lot of unnecessary index-like data? Affect overall performance?
cppfuns opened this issue · comments
Continue discussion
#209
Suppose I have a contract A, and I want to set query options for parameter B in a certain ACTION, then I need to add "data.B" to search-common-indexed-terms. At this time, many other people's contracts also have other ACTION with parameter B. Is it possible to query other people's contracts to execute the corresponding ACTION transaction? I just wanted to check my own contract, and it was a specified ACTION. Now all ACTIONs in the whole chain can be checked. Will dfuseeos store a lot of unnecessary index-like data? Affect overall performance?
Indeed, the search indexer works on the field level, it does not make any more advanced check like indexing only actions from those contracts. This behavior is meant for full chain indexing from those that host full unfiltered public chains.
To limit what need to be consumed/checked, .
To restrict what is indexed by components inside dfuse, you need to use the filtering capabilities of dfuse for EOSIO. This filtering applies to all components that consumes dfuse Blocks, which includes the Search Indexer (as well as transaction database loader, state db, etc).
You can see the initial docs we have: https://docs.dfuse.io/eosio/admin-guide/filtering/ and also a pending work branch that we did not finish yet: https://github.com/dfuse-io/docs/blob/feature/update-filtering/content/eosio/admin-guide/filtering.md
This is how you can drastically reduce the dfuse requirements for storage and search power, by indexing only specific set of contract(s) even specific actions on some contracts. The filtering language we use can check a lot of stuff so it's very powerful to decide which actions should be included for processing inside dfuse for EOSIO.