Sunday, 7 May 2017

Inappropriate Redis Database Design

I have a node.js API that is responsible for 3 things:

  • Registering a buyer
  • Getting a buyer with ID
  • Finding the matching buyer's offer based on some criteria

Details here

Since I'm new to Redis, I started the implementation like this:

  1. JSON.stringify the buyer and store it with SET
  2. Store all buyer's offers as ordered set (this is for the third endpoint, which requires the offer with the highest value) - this set contains string that represents the name of a hash
  3. Then, that hash stores strings that represent the names of sets that have certain values and a location which the user will be redirected to after these conditions have been fulfilled (buyer1_devices, buyer1_hours, etc.)

Now, here is the problem:

I need to get GET /route working. As described on GitHub page that I have provided, I have 3 parameters: a timestamp, devices, and states. I have to browse through all the sets and get the appropriate location to redirect a user to. The location is stored in a hash, but I have to browse through all the sets. Since this is probably a bad implementation, where did it all go wrong and to go about implementing this?

  • Note that this is a redis problem, not a node one. I need instructions on how to go about implementing this in Redis, and then I will be ready to code it in Node.

Thank you in advance



via Dragos Strugar

No comments:

Post a Comment