Re: Contrib -- PostgreSQL shared variables - Mailing list pgsql-hackers
From | pgsql@mohawksoft.com |
---|---|
Subject | Re: Contrib -- PostgreSQL shared variables |
Date | |
Msg-id | 17368.24.91.171.78.1093665658.squirrel@mail.mohawksoft.com Whole thread Raw |
In response to | Re: Contrib -- PostgreSQL shared variables (Jonathan Gardner <jgardner@jonathangardner.net>) |
Responses |
Re: Contrib -- PostgreSQL shared variables
|
List | pgsql-hackers |
> I don't see how this is different from "CREATE TABLE shared_variables > (name > VARCHAR PRIMARY KEY, value VARCHAR)" and > inserting/updating/deleting/selecting from that. Perhaps these are > per-session shared variables? IN which case, what is the utility if > sharing > them across shared memory? > > - -- > Jonathan Gardner Well, the issues you don't see is this: What if you have to update the variables [n] times a second? You have to vacuum very frequently. If you update a variable a hundred times a second, and vacuum only once every minute, the time it takes to update ranges from reading one row from the database to reading 5999 dead rows to get to the live one. Then you vacuum, then you are back to one row again. On top of that, all the WAL logging that has to take place for each "transaction." I hope no one misunderstands my motives here. I think PostgreSQL is a GREAT project. I differ with the core team on a frequent basis. Maybe the problem is maybe I've been corrupted by Windows programming or something. If you develop software on Windows, the trick is knowing how to do things not intended to be done by you in order to accomplish your task. These small little tricks are common knowledge in the M$ campuses, but in the outside world they are the street cred that gets you paid. I may play a little too fast and loose with "standards." PostgreSQL is a "GREAT" SQL database, however the "database" is no longer the product. The product is the set of functions and infrastructure on top of the database. The SQL database is a commodity, it is what you can do with it that makes it interresting. The stuff that I contribute is often met with resistence, and that may or may not be a good thing, but over the years, things I've said they NEEDED to do, have been done and PostgreSQL is better for it. I remember an exchange with Tom about four or five years ago, about the need to return a number of rows from a PostgreSQL function. I don't remember it too well, but my memory tells me he said it wasn't possible, or maybe it was possible but not worth it, or something like that. PostgreSQL returns sets of rows now. It took a few years, but no one would say, now, they didn't need to do it. Now don't think I'm talking trash to Tom either. These guys do a lot of hard work. I have the luxury of working on other projects and noticing the sorts of things that are a problem or could be great features. I have great respect for them, even if not they for me. I think the shared variable module is another one of those things. The cost overhead of a single variable implemented as a row is too high, especially if you want to update it many times a second. This is a simple module. It will work for a good number of deployments and make PostgreSQL more viable for them. I fully expect that the module will grow into something better, ala rserv, be folded into PostgreSQL, ala toast, or just languish in contrib. (if it is added at all.) I believe in Open Source, I have needed this functionality in the past, I will probably need it in the future. If I can share it with the project, why not?
pgsql-hackers by date: