dlmarion commented on PR #2665:
URL: https://github.com/apache/accumulo/pull/2665#issuecomment-1153850271

   > They [scan hints] were never intended to change anything about data 
returned
   
   I equate scan hints with Oracle's [optimizer 
hints](https://docs.oracle.com/cd/B19306_01/server.102/b14211/hintsref.htm#i17496)
 which allow the user to alter the execution plan for the query. I agree that 
scan hints should affect how the scan gets executed and not affect the results 
being returned.
   
   > It's weird to ask for eventual consistency. Nobody wants eventual 
consistency. Eventual consistency is always tolerated, never desired.
   
   I think setting the consistency level is the means for achieving a specific 
goal. Some applications may require strict consistency for correctness and 
others may be more concerned with speed. I looked for how other products 
exposed consistency levels in their api. Specifically I was looking for 
products that used consistency level and not some other name to show that it's 
not uncommon. This is by no means a complete list, but just some examples of 
products that document their consistency levels and then provide a method for 
setting the consistency level in their api.
   
   1. [Microsoft Cosmos 
DB](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/how-to-manage-consistency?tabs=portal%2Cdotnetv2%2Capi-async#configure-the-default-consistency-level)
 uses a method called `consistencyLevel`
   2. [Amazon 
DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html)
 has read operations that take a `ConsistentRead` parameter
   3. [HashiCorp 
Consul](https://www.consul.io/api-docs/features/consistency#overriding-a-request-s-consistency-mode)
 has a HTTP API query parameter for specifying the consistency level
   
   Since immediate/strict consistency is the default, maybe we just need a 
method to disable it for a specific query instead of specifying the value. For 
example, `enableEventualConsistency()`, `relaxReadGuarantees()`, 
`disableConsistentReads()`, `allowStaleReads()`, etc.
   
   I'm also thinking that there should be a table configuration that 
enables/disables this feature. Currently, an admin can spin up some ScanServers 
and an application developer can enable eventual consistency, but do we want 
that on the `metadata` table for example?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to