database design with temporary tables

Started by ourdiasporaover 4 years ago16 messagesgeneral
Jump to latest
#1ourdiaspora
ourdiaspora@protonmail.com

Readers,

Some advice would be appreciated about appropriate tables to store temporary data.

Scenario:
User copies csv file of user data, presumably into some temporary table(s);
User selects data (read-only) from extant tables;
Web server combines user data with read-only data to produce content visible to user as html and/or pdf document;
User does not need to sign in to use web page, only the user e-mail address;
User data deleted (including e-mail address) after time (e.g. 24 hours) and/or user selects to receive combined data via e-mail (after which all user data is automatically deleted).

What part of the documention would be most relevant to read firstly, please?

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: ourdiaspora (#1)
Re: database design with temporary tables

On 8/29/21 9:10 AM, ourdiaspora wrote:

Readers,

Some advice would be appreciated about appropriate tables to store temporary data.

Scenario:
User copies csv file of user data, presumably into some temporary table(s);

Presumably not. Temporary tables only live at most for the length of a
session. It would be a really bad idea to hold sessions open for 24
hours. That is assuming nothing else causes the session to drop and the
data to be lost.

User selects data (read-only) from extant tables;
Web server combines user data with read-only data to produce content visible to user as html and/or pdf document;
User does not need to sign in to use web page, only the user e-mail address;
User data deleted (including e-mail address) after time (e.g. 24 hours) and/or user selects to receive combined data via e-mail (after which all user data is automatically deleted).

What part of the documention would be most relevant to read firstly, please?

The abo

--
Adrian Klaver
adrian.klaver@aklaver.com

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Adrian Klaver (#2)
Re: database design with temporary tables

On 8/29/21 9:24 AM, Adrian Klaver wrote:

On 8/29/21 9:10 AM, ourdiaspora wrote:

Readers,

User selects data (read-only) from extant tables;
Web server combines user data with read-only data to produce content
visible to user as html and/or pdf document;
User does not need to sign in to use web page, only the user e-mail
address;
User data deleted (including e-mail address) after time (e.g. 24
hours) and/or user selects to receive combined data via e-mail (after
which all user data is automatically deleted).

What part of the documention would be most relevant to read firstly,
please?

The abo

Whoops, unfinished thought. What I was going to ask is:

The above is not clear to me. Are you asking about the Postgres
documentation?

--
Adrian Klaver
adrian.klaver@aklaver.com

#4ourdiaspora
ourdiaspora@protonmail.com
In reply to: Adrian Klaver (#2)
Re: database design with temporary tables

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:24 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:

Presumably not. Temporary tables only live at most for the length of a

session. It would be a really bad idea to hold sessions open for 24

hours.

Is there an alternative scenario, such as the user is able to create a new table with saves the session data for a maximum time (such as 24 hours), even up to a certain time if the web browser crashes for example?

The abo

Incomplete response?

#5Ray O'Donnell
ray@rodonnell.ie
In reply to: ourdiaspora (#4)
Re: database design with temporary tables

On 29/08/2021 17:36, ourdiaspora wrote:

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:24 PM, Adrian Klaver
<adrian.klaver@aklaver.com> wrote:

Presumably not. Temporary tables only live at most for the length
of a

session. It would be a really bad idea to hold sessions open for
24

hours.

Is there an alternative scenario, such as the user is able to create
a new table with saves the session data for a maximum time (such as
24 hours), even up to a certain time if the web browser crashes for
example?

I'd save a timestamp with the session data, and then run a cron job
which deletes sessions older than whatever lifetime you want.

Ray.

--
Raymond O'Donnell // Galway // Ireland
ray@rodonnell.ie

#6ourdiaspora
ourdiaspora@protonmail.com
In reply to: Adrian Klaver (#3)
Re: database design with temporary tables

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:30 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:

On 8/29/21 9:24 AM, Adrian Klaver wrote:

Whoops, unfinished thought. What I was going to ask is:

The above is not clear to me. Are you asking about the Postgres

documentation?

Yes, wanted to know relevant parts because often the first problem is to know which part of the (extensive) documentation to read...

#7David G. Johnston
david.g.johnston@gmail.com
In reply to: ourdiaspora (#6)
Re: database design with temporary tables

On Sunday, August 29, 2021, ourdiaspora <ourdiaspora@protonmail.com> wrote:

Yes, wanted to know relevant parts because often the first problem is to
know which part of the (extensive) documentation to read...

Suggest you just start developing. When you get stuck the nature of the
block should inform where to go looking for answers. Or at least formulate
more specific questions.

David J.

#8David G. Johnston
david.g.johnston@gmail.com
In reply to: Ray O'Donnell (#5)
Re: database design with temporary tables

On Sunday, August 29, 2021, Ray O'Donnell <ray@rodonnell.ie> wrote:

Is there an alternative scenario, such as the user is able to create
a new table with saves the session data for a maximum time (such as
24 hours), even up to a certain time if the web browser crashes for
example?

In general a database doesn’t change just because time has passed. You
will need to setup something external to the database schema if you want
time to cause change.

David J.

#9ourdiaspora
ourdiaspora@protonmail.com
In reply to: Ray O'Donnell (#5)
Re: database design with temporary tables

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:38 PM, Ray O'Donnell <ray@rodonnell.ie> wrote:

I'd save a timestamp with the session data, and then run a cron job

which deletes sessions older than whatever lifetime you want.

Is it prudent in this scenario for the user to create (a) tables of her/his data, with role as her/his e-mail address (no password)?

#10Adrian Klaver
adrian.klaver@aklaver.com
In reply to: ourdiaspora (#4)
Re: database design with temporary tables

On 8/29/21 9:36 AM, ourdiaspora wrote:

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:24 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:

Presumably not. Temporary tables only live at most for the length of a

session. It would be a really bad idea to hold sessions open for 24

hours.

Is there an alternative scenario, such as the user is able to create a new table with saves the session data for a maximum time (such as 24 hours), even up to a certain time if the web browser crashes for example?

This is a it depends answer. Some factors in play:

1) Number of users over say a 24 hour period.

2) The size of the CSV files.

3) Is the data merge a one time thing or can it be repeated in a time
period.

4) Are users going to be repeat customers?

For this sort of thing I write out a detailed outline of the
who/what/why/where/when. In doing that answers tend to follow.

The abo

Incomplete response?

--
Adrian Klaver
adrian.klaver@aklaver.com

#11Adrian Klaver
adrian.klaver@aklaver.com
In reply to: ourdiaspora (#6)
Re: database design with temporary tables

On 8/29/21 9:38 AM, ourdiaspora wrote:

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:30 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:

On 8/29/21 9:24 AM, Adrian Klaver wrote:

Whoops, unfinished thought. What I was going to ask is:

The above is not clear to me. Are you asking about the Postgres

documentation?

Yes, wanted to know relevant parts because often the first problem is to know which part of the (extensive) documentation to read...

From what I see it is basic operations; CREATE TABLE, SELECT, INSERT,
UPDATE and COPY.

As I said in my previous post create a fairly detailed design flow first
and from that you will see what operations you need to do and what part
of the docs you need to look at.

--
Adrian Klaver
adrian.klaver@aklaver.com

#12Ray O'Donnell
ray@rodonnell.ie
In reply to: Adrian Klaver (#11)
Re: database design with temporary tables

On 29/08/2021 17:53, Adrian Klaver wrote:

On 8/29/21 9:38 AM, ourdiaspora wrote:

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, August 29th, 2021 at 5:30 PM, Adrian Klaver
<adrian.klaver@aklaver.com> wrote:

On 8/29/21 9:24 AM, Adrian Klaver wrote:

Whoops, unfinished thought. What I was going to ask is:

The above is not clear to me. Are you asking about the Postgres

documentation?

Yes, wanted to know relevant parts because often the first problem is
to know which part of the (extensive) documentation to read...

From what I see it is basic operations; CREATE TABLE, SELECT, INSERT,
UPDATE and COPY.

As I said in my previous post create a fairly detailed design flow first
and from that you will see what operations you need to do and what part
of the docs you need to look at.

+100 to this. Also, it's not clear from your description what is
happening where - how much functionality is in the database, and how
much at the web server. Are your users connecting directly to the
database server? - or do they connect only to the web server, which then
uses its own account on the database server? Get this clear in your own
head and much of the rest will follow.

Ray.

--
Raymond O'Donnell // Galway // Ireland
ray@rodonnell.ie

#13ourdiaspora
ourdiaspora@protonmail.com
In reply to: Ray O'Donnell (#12)
Re: database design with temporary tables

On Sunday, August 29th, 2021 at 5:56 PM, Ray O'Donnell <ray@rodonnell.ie> wrote:

- or do they connect only to the web server, which then

uses its own account on the database server?

Thank you; was not aware of this consideration and this option seems most appropriate for the simple sql commands envisaged.

#14Mladen Gogala
gogala.mladen@gmail.com
In reply to: Adrian Klaver (#2)
Re: database design with temporary tables

On 8/29/21 12:24 PM, Adrian Klaver wrote:

Presumably not. Temporary tables only live at most for the length of a
session. It would be a really bad idea to hold sessions open for 24
hours. That is assuming nothing else causes the session to drop and
the data to be lost.

Well, that's precisely how application servers work. The allocate
connection pool and keep them open for a very long time.

--
Mladen Gogala
Database Consultant
Tel: (347) 321-1217
https://dbwhisperer.wordpress.com

#15Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Mladen Gogala (#14)
Re: database design with temporary tables

On 8/29/21 10:41 AM, Mladen Gogala wrote:

On 8/29/21 12:24 PM, Adrian Klaver wrote:

Presumably not. Temporary tables only live at most for the length of a
session. It would be a really bad idea to hold sessions open for 24
hours. That is assuming nothing else causes the session to drop and
the data to be lost.

Well, that's precisely how application servers work. The allocate
connection pool and keep them open for a very long time.

The pool is maintained, the individual connections(sessions) come and
go. Otherwise there would be no point to having a pool. Every time the
connection(session) is closed the temporary table disappears.

--
Adrian Klaver
adrian.klaver@aklaver.com

#16Mladen Gogala
gogala.mladen@gmail.com
In reply to: Adrian Klaver (#15)
Re: database design with temporary tables

On 8/29/21 2:26 PM, Adrian Klaver wrote:

The pool is maintained, the individual connections(sessions) come and
go. Otherwise there would be no point to having a pool. Every time the
connection(session) is closed the temporary table disappears.

Yes, you're right. And that is very convenient. I also prefer temporary
tables with ON COMMIT DELETE ROWS so that I don't have leftovers between
transactions. There is also pgtt extension by Giles Darold which
emulates Oracle global temporary tables:

https://github.com/darold/pgtt#use-of-the-extension

I have never particularly liked Oracle's implementation of temporary
tables, local or global,  so I have no problems with questions like
that. BTW, I have compared Oracle's implementation with other
implementations here:

https://dbwhisperer.wordpress.com/2019/03/18/private-temporary-tables-oracle-18c/

I could have used Postgres instead of the SQL Server, the comparison
would read the same, except for the "#" character which denotes
temporary table in SQL Server.

Regards

--
Mladen Gogala
Database Consultant
Tel: (347) 321-1217
https://dbwhisperer.wordpress.com