Thread: Количество атрибутов в таблице

Количество атрибутов в таблице

From
"Sergey Karin"
Date:

Здравствуйте.

 

В описании ограничений постгреса сказано, что таблица может содержать 2500-1600 столбцов в зависимости от типа этих самых столбцов.

Каким образом эта зависимость проявляется?

Например, если я имею столбцы int4, varchar, bytea. В основном int4 и varchar, то сколько столбцов может быть?

 

Сергей Карин

Re: Количество атрибутов в таблице

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-2026989069-1113915931=:4405
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 19 Apr 2005, Sergey Karin wrote:

> Здравствуйте.
>
>
>
> В описании ограничений постгреса сказано, что таблица может содержать
> 2500-1600 столбцов в зависимости от типа этих самых столбцов.
>
> Каким образом эта зависимость проявляется?
>
> Например, если я имею столбцы int4, varchar, bytea. В основном int4 и
> varchar, то сколько столбцов может быть?

размер страницы ограничивает, запись (tuple) должна помещаться.
250 - это если у тебя все колонки toastable и тогда требуется 32 байта,
а 1600 - если у тебя по 4 байта как в int4.

>
>
>
> Сергей Карин
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-2026989069-1113915931=:4405--

Re: Количество

From
"Viktor Vislobokov"
Date:
Пояснения уже дали, но прошу обратить внимание, что там же где пишется
про это ограничение говорится и что такое количество колонок в таблице -
не очень хорошая идея и часто свидетельствует о неправильном дизайне
БД.  Помоему ещё где-то было упоминание, что при околопредельном
количестве колонок в таблице, производительность СУБД на таких таблицах
будет хуже. Так что нужно серьёзно подумать - надо ли оно?

> Здравствуйте.
>
>
>
> В описании ограничений постгреса сказано, что таблица может содержать
> 2500-1600 столбцов в зависимости от типа этих самых столбцов.
>
> Каким образом эта зависимость проявляется?
>
> Например, если я имею столбцы int4, varchar, bytea. В основном int4 и
> varchar, то сколько столбцов может быть?
>
>
>
> Сергей Карин
>


--
С уважением, Виктор



Re: Количество

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-2022861571-1113969207=:28522
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Wed, 20 Apr 2005, Viktor Vislobokov wrote:

> Пояснения уже дали, но прошу обратить внимание, что там же где пишется про
> это ограничение говорится и что такое количество колонок в таблице - не очень
> хорошая идея и часто свидетельствует о неправильном дизайне БД.  Помоему ещё
> где-то было упоминание, что при околопредельном количестве колонок в таблице,
> производительность СУБД на таких таблицах будет хуже. Так что нужно серьёзно
> подумать - надо ли оно?

Иногда требуется, но обычно поиск идет только по нескольким атрибутам,
а остальные нужны только для показа. Поэтому, мы запихиваем эти все остальные
атрибуты в хэш и храним в одном поле. Есть даже спец. тип данных
hstore (www.sai.msu.su/~megera/postgres/gist) для этого,
а если не хочется с этим связываться и работа идет с perl, то можно
хранить стринговое представление хэша (Data::Dumper).


>
>> Здравствуйте.
>>
>>
>> В описании ограничений постгреса сказано, что таблица может содержать
>> 2500-1600 столбцов в зависимости от типа этих самых столбцов.
>>
>> Каким образом эта зависимость проявляется?
>>
>> Например, если я имею столбцы int4, varchar, bytea. В основном int4 и
>> varchar, то сколько столбцов может быть?
>>
>>
>> Сергей Карин
>>
>
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-2022861571-1113969207=:28522--

RE: Re: [pgsql-ru-general] Количество

From
"Sergey Karin"
Date:

-----Original Message-----
From: pgsql-ru-general-owner@postgresql.org
[mailto:pgsql-ru-general-owner@postgresql.org] On Behalf Of Oleg Bartunov
Sent: Wednesday, April 20, 2005 7:53 AM
To: vvislobokov@lukoilperm.ru
Cc: 'pgsql-ru-general'
Subject: [OBORONA-SPAM] Re: [pgsql-ru-general] Количество

On Wed, 20 Apr 2005, Viktor Vislobokov wrote:

> Пояснения уже дали, но прошу обратить внимание, что там же где пишется про
> это ограничение говорится и что такое количество колонок в таблице - не
очень
> хорошая идея и часто свидетельствует о неправильном дизайне БД.  Помоему
ещё
> где-то было упоминание, что при околопредельном количестве колонок в
таблице,
> производительность СУБД на таких таблицах будет хуже. Так что нужно
серьёзно
> подумать - надо ли оно?

Иногда требуется, но обычно поиск идет только по нескольким атрибутам,
а остальные нужны только для показа. Поэтому, мы запихиваем эти все
остальные
атрибуты в хэш и храним в одном поле. Есть даже спец. тип данных
hstore (www.sai.msu.su/~megera/postgres/gist) для этого,
а если не хочется с этим связываться и работа идет с perl, то можно
хранить стринговое представление хэша (Data::Dumper).


Я полностью согласен с тем, что очень большое количество атрибутов в таблице
говорит о неправильном дизайне. Однако у меня данный вопрос возник вот
почему. Я занимаюсь разработкой ГИС с использованием связки postgres +
postgis. Вот. А там устройство такое. Слой - это отдельная таблица. Строками
таблицы являются объекты. Каждый объект кроме географии имеет некоторое
количество атрибутов. Для всех объектов слоя их количество фиксировано, но
может быть очень большим. Понятно, что в 99.99999% случаев количество
атрибутов не перевалит даже за 50, но если ограничение есть, то надо об этом
знать заранее. 
А теперь к вопросу о том, почему не получается хранить все атрибуты в хэше.
Все сторонние системы, например OGR (http://www.gdal.org/ogr), считают, что
атрибут объекта - это отдельное поле таблицы. Исходя из этого они и
работают...
Вот такие вот дела.

>
>> Здравствуйте.
>>
>>
>> В описании ограничений постгреса сказано, что таблица может содержать
>> 2500-1600 столбцов в зависимости от типа этих самых столбцов.
>>
>> Каким образом эта зависимость проявляется?
>>
>> Например, если я имею столбцы int4, varchar, bytea. В основном int4 и
>> varchar, то сколько столбцов может быть?
>>
>>
>> Сергей Карин
>>
>
>
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@postgresql.org so that your
      message can get through to the mailing list cleanly

RE: Re: [pgsql-ru-general] Количество

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-1691952160-1113987067=:28522
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Wed, 20 Apr 2005, Sergey Karin wrote:

>
>
> -----Original Message-----
> From: pgsql-ru-general-owner@postgresql.org
> [mailto:pgsql-ru-general-owner@postgresql.org] On Behalf Of Oleg Bartunov
> Sent: Wednesday, April 20, 2005 7:53 AM
> To: vvislobokov@lukoilperm.ru
> Cc: 'pgsql-ru-general'
> Subject: [OBORONA-SPAM] Re: [pgsql-ru-general] Количество
>
> On Wed, 20 Apr 2005, Viktor Vislobokov wrote:
>
>> Пояснения уже дали, но прошу обратить внимание, что там же где пишется про
>> это ограничение говорится и что такое количество колонок в таблице - не
> очень
>> хорошая идея и часто свидетельствует о неправильном дизайне БД.  Помоему
> ещё
>> где-то было упоминание, что при околопредельном количестве колонок в
> таблице,
>> производительность СУБД на таких таблицах будет хуже. Так что нужно
> серьёзно
>> подумать - надо ли оно?
>
> Иногда требуется, но обычно поиск идет только по нескольким атрибутам,
> а остальные нужны только для показа. Поэтому, мы запихиваем эти все
> остальные
> атрибуты в хэш и храним в одном поле. Есть даже спец. тип данных
> hstore (www.sai.msu.su/~megera/postgres/gist) для этого,
> а если не хочется с этим связываться и работа идет с perl, то можно
> хранить стринговое представление хэша (Data::Dumper).
>
>
> Я полностью согласен с тем, что очень большое количество атрибутов в таблице
> говорит о неправильном дизайне. Однако у меня данный вопрос возник вот
> почему. Я занимаюсь разработкой ГИС с использованием связки postgres +
> postgis. Вот. А там устройство такое. Слой - это отдельная таблица. Строками
> таблицы являются объекты. Каждый объект кроме географии имеет некоторое
> количество атрибутов. Для всех объектов слоя их количество фиксировано, но
> может быть очень большим. Понятно, что в 99.99999% случаев количество
> атрибутов не перевалит даже за 50, но если ограничение есть, то надо об этом
> знать заранее.
> А теперь к вопросу о том, почему не получается хранить все атрибуты в хэше.
> Все сторонние системы, например OGR (http://www.gdal.org/ogr), считают, что
> атрибут объекта - это отдельное поле таблицы. Исходя из этого они и
> работают...

Это не аргумент, а просто требование отдельно взятого продукта. Кто мешает
написать небольшой слой, который выдает атрибут по требованию из того-же
хэша ?

> Вот такие вот дела.
>

>>
>>> Здравствуйте.
>>>
>>>
>>> В описании ограничений постгреса сказано, что таблица может содержать
>>> 2500-1600 столбцов в зависимости от типа этих самых столбцов.
>>>
>>> Каким образом эта зависимость проявляется?
>>>
>>> Например, если я имею столбцы int4, varchar, bytea. В основном int4 и
>>> varchar, то сколько столбцов может быть?
>>>
>>>
>>> Сергей Карин
>>>
>>
>>
>>
>
>     Regards,
>         Oleg
> _____________________________________________________________
> Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
> Sternberg Astronomical Institute, Moscow University (Russia)
> Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
> phone: +007(095)939-16-83, +007(095)939-23-83
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>      subscribe-nomail command to majordomo@postgresql.org so that your
>      message can get through to the mailing list cleanly
>

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1691952160-1113987067=:28522--

Re: RE: Re: [pgsql-ru-general] Количество

From
Oleg Bartunov
Date:
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---559023410-570397931-1113987494=:28522
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT

On Wed, 20 Apr 2005, Sergey Karin wrote:

>
> говорит о неправильном дизайне. Однако у меня данный вопрос возник вот
> почему. Я занимаюсь разработкой ГИС с использованием связки postgres +
> postgis. Вот. А там устройство такое. Слой - это отдельная таблица. Строками

Кстати, о ГИС. Я по профессии астроном и мы работаем с очень похожими данными.
Это каталоги звезд с координатами на сфере. Может тебе будет интересно
узнать как еще можно работать с такими данными без PostGIS
http://www.sai.msu.su/~megera/oddmuse/index.cgi/SkyPixelization

Там пока не много написано, нет описания как делать join двух каталогов,
но промежуточные результаты вполне обещающи - join 20mln звезд с
500mln занимает около 50минут на средней машинке, которая еще и стоит
в продакшн. Это означает, что стандартные гисовские задачи с несколькими
тысячами точек можно решать просто в online. Правда, это все точки.

     Regards,
         Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-570397931-1113987494=:28522--