On 2024-03-30 09:23:15 -0400, Ron Johnson wrote: > On Sat, Mar 30, 2024 at 9:15 AM 黄宁 <huangning0722@xxxxxxxxx> wrote: > > I want to develop a postgresql paid extension, then there is a local > license file, how do I check if the license file is expired, check it once > at each api execution, will that affect the performance of the api, is > there any other way? > > > What you're really asking is "how do I read a file from an extension?". > We often chide users for falling into the "XY problem"[1] trap, so think it's nice that 黄宁 asks about the bigger picture. I can't help with the extension (never wrote one), but a few thoughts: Basically I see three ways to get at the license information: * from a file (as mentioned) * from a database table * over the network (e.g. from a license server) On my (not very fast) laptop I can open and read a small text file in about 25 µs. Selecting one row from a small database table takes about 100 µs, which is quite a bit slower but I tested that from an external process. A stored procedure would be faster than that and possibly even faster than the file access. A query over the network is unlikely to be faster. Plus of course you need to check the contents, which likely involves some cryptographic operation. Checking a 2048 bit RSA signature takes about 30 µs on my laptop, most other algorithms are slower (unless you go with a simple HMAC which wouldn't be secure). So realistically we are somewhere in the 50 to 200 µs range. Is this an acceptable performance penalty per API call? If not, is it really necessary to check this on every call? Maybe it can be done just once per session or once per hour. hp [1] You have problem X and think that Y is part of the solution. So you ask how to achieve Y. However, Z would be better than Y for solving X, but nobody can tell you because they don't know about X. -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | hjp@xxxxxx | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"
Attachment:
signature.asc
Description: PGP signature