You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by GitBox <gi...@apache.org> on 2020/03/16 17:18:46 UTC

[GitHub] [couchdb] anuragvohraec opened a new issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?

anuragvohraec opened a new issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?
URL: https://github.com/apache/couchdb/issues/2669
 
 
   It would be a nice idea to expose some kind of standard hash function [say md5], which can be used inside a map function.
   So every emit that is being done like this `emit(**hash(**jsKeyObject**)**, someValue);`, will generate a unique hash key, this can make deep nested object comparsion very easy and fast, from a view.
   
   ## Summary
   Apart from emit function and other [JS objects provided by couchdb inside map functions](https://docs.couchdb.org/en/stable/query-server/javascript.html#javascript), couchdb can also provide one [many] standard hash functions. For example `hashMD5(toJson(someKeyObject))`
   
   This will allow deep object comparison a peice of cake from a view.
    
   ## Desired Behaviour
   ### Usage
   Inside a map function, apart from emit , a `hash(String value)`,  expose a JS hash function.
   So we can emit object like :
   `emit(hashMD5(toJson(jsonKeyObject)), someOtherValueIfRequired);`
   
   ## Suggest how to implement the addition or change. 
   A standard toJson and hash function needs to be defined. toJson standardization will allow sam hash to be created at client and couch end.
   The specification for both of this function should be clearly be made available [just like the replication protocol], so that we can update our couch local clients accordingly.
   
   [MD5 hash JS implementations are already available.](https://www.npmjs.com/package/md5)
   
   ## Additional context
   #  Why does this feature matter to you? What unique circumstances do you have?
   
   I am designing a nodejs solution for user access management system.
   1. I wanted to check if user/user's group has all appropriate rights or not.
   2. Also check if an access group description has changed or not over time.
   
   For example: User will present a json webtoken with an access hash (of groups) he thinks he has.
   If that groups has changed over time, its map function will create new hashes.
   Just by mere comparing hashes I can ensure user has all proper rights or not.
   
   Now it will be preemptive to think that `toJson` can be used in a smilar way, but we are talking about deep nested 8 MB Documents here. [Doc size limit in Couch 3.0]. 
   
   So for fast search and match, hash function mapping can be very helpfull.
   Its very easy to implment and will have no effect on existing couch functionality.
   
   Please feel free to reach me, if more info requried.
   Can this be part of couchdb 3.0.1 release as its very simple to implment, if I am not wrong.
   [I have no knowledge of erlang, but have imeplemented couchdb type of db for dart/flutter applications].

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [couchdb] wohali commented on issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?

Posted by GitBox <gi...@apache.org>.
wohali commented on issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?
URL: https://github.com/apache/couchdb/issues/2669#issuecomment-599683611
 
 
   @anuragvohraec With couchjs you can include other JavaScript modules. In CouchDB 3.0.0 on certain platforms you have access to ES2015 and some ES6 features.
   
   So, just pull a JavaScript module for a hash function into your view using CommonJS. See: https://docs.couchdb.org/en/stable/query-server/javascript.html#commonjs-modules
   
   You should be able to adapt publicly available code for this easily. We won't be adding this functionality natively.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [couchdb] wohali closed issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?

Posted by GitBox <gi...@apache.org>.
wohali closed issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?
URL: https://github.com/apache/couchdb/issues/2669
 
 
   

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

[GitHub] [couchdb] anuragvohraec commented on issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?

Posted by GitBox <gi...@apache.org>.
anuragvohraec commented on issue #2669: Expose MD5 or some kind of standard hash function to be used inside a map function, which will allow easy comparsion of deep nested objects ?
URL: https://github.com/apache/couchdb/issues/2669#issuecomment-599803582
 
 
   > couchjs
   
   Perfect ! That will solve all my needs.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services