Re: Design strategy for table with many attributes

Поиск
Список
Период
Сортировка
От Ron Johnson
Тема Re: Design strategy for table with many attributes
Дата
Msg-id CANzqJaB49Rp0buF3DwPjzivSbTM+3p+COvr9n6Athk+v35nFiQ@mail.gmail.com
обсуждение исходный текст
Ответ на Design strategy for table with many attributes  (Lok P <loknath.73@gmail.com>)
Список pgsql-general
On Thu, Jul 4, 2024 at 3:38 PM Lok P <loknath.73@gmail.com> wrote:
Hello,
In one of the applications we are getting transactions in messages/events format and also in files and then they are getting parsed and stored into the relational database. The number of attributes/columns each transaction has is ~900+. Logically they are part of one single transaction

Nothing out of the ordinary.
 
and should be stored in one table as one single row.

Says who?
 
There will be ~500million such transactions each day coming into the system. And there will be approx ~10K peak write TPS and 5K read TPS in target state. This system has a postgres database as a "source of truth" or OLTP store. And then data moves to snowflakes for the olap store.

Initially when the system was designed the number of attributes per transaction was <100 but slowly the business wants to keep/persist other attributes too in the current system and the number of columns keep growing.

However, as worked with some database systems , we get few suggestions from DBA's to not have many columns in a single table. For example in oracle they say not to go beyond ~255 columns as then row chaining and row migration type of things are going to hunt us. Also we are afraid concurrent DMLS on the table may cause this as a contention point. So I wanted to understand , in such a situation what would be the best design approach we should use irrespective of databases? Or say, what is the maximum number of columns per table we should restrict? Should we break the single transaction into multiple tables like one main table and other addenda tables with the same primary key to join and fetch the results wherever necessary?

You need database normalization.  It's a big topic.  Here's a good simple explanation:

В списке pgsql-general по дате отправления:

Предыдущее
От: Kent Dorfman
Дата:
Сообщение: Re: Design strategy for table with many attributes
Следующее
От: Vasu Nagendra
Дата:
Сообщение: JSONPath operator and escaping values in query