BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> jdbc драйвер за postgresql
Gamma Goblin
Публикувано на: 05-12-2019, 15:48
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3199
Регистриран на: 21.02.18



QUOTE
Тя ако релацията е 1:1 то защо изобщо има външна таблица?
еxtensibility - лесно се добавят и махат нови неща


--------------------
https://www.rust-lang.org/
---
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
--
"Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
Gamma Goblin
Публикувано на: 05-12-2019, 15:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3199
Регистриран на: 21.02.18



QUOTE
@Gamma Goblin, индексирането подобрява нещата. Но четенето без join винаги е по-бързо. Представи си 10 годишна база данни как ги свързва тия таблици, при положение, че винаги релацията им е 1:1. Това просто е излишна операция (5 излишни операции).


Най-добре е да си пуснеш explain analyze на заявката и да видиш какъв план ти генерира. Аз като си оправих индексите от 10ина милисекунди падна на под милисекунда. Имах около 4-5 джойна. Но в моя случай дори да си беше 10мс, пак си беше ОК като време.

Това мнение е било редактирано от Gamma Goblin на 05-12-2019, 15:51


--------------------
https://www.rust-lang.org/
---
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
--
"Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 05-12-2019, 16:16
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2689
Регистриран на: 17.01.17



То зависи с колко данни работиш, но точно тук релационните бази данни отстъпват на документните. Иначе, на индексите няма какво да им оправям - pgadmin-а е нахален и си генерира индекс по подразбиране в момента в който създадеш външен ключ.

Мани другото, ама целя тоя мармалад работи на партишъни (по години). Та join-новете се правят не между 3 таблици а да речем (за 10 години) между 3 * 10 демек между 30 таблици.
PMEmail Poster
Top
thrawn
Публикувано на: 05-12-2019, 17:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2689
Регистриран на: 17.01.17



За добавяне на данни направих тъп хак с java.sql.Array
CODE
Array person = connection.createArrayOf("person", new Object[] {"array (name) 1", "array (name) 2"});
String p = person.toString().replaceAll("^\\{(.*)\\}$", "($1)");;

Array boss = connection.createArrayOf("boss", new Object[]{p, "array, comment, with, \"comma\""});
String b = boss.toString().replaceAll("^\\{(.*)\\}$", "($1)");
System.out.println(b);

query = "insert into t3 values (?, ?::boss)";
try(PreparedStatement statement = connection.prepareStatement(query)) {
   statement.setInt(1, 1);
   statement.setString(2, b);
   statement.execute();
}


Дайте сега оптимално решение за парсване на
QUOTE
("(""array (name) 1"",""array (name) 2"")","array, comment, with, ""comma""")

Като гледам е CSV + скоби

Иначе класическа обработка. То май така е по-удачно, щото мога да обработя само каквото ми трябва.
SQL
select id, (boss::boss).person.*, (boss::boss).comment from t3


Това мнение е било редактирано от thrawn на 05-12-2019, 17:16
PMEmail Poster
Top
r4nd0m
Публикувано на: 05-12-2019, 17:25
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1094
Регистриран на: 05.09.07



QUOTE (40oz @ 05-12-2019, 13:29)
json?

или JSONB


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
dvader
Публикувано на: 05-12-2019, 18:52
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4655
Регистриран на: 12.07.05



QUOTE (Gamma Goblin @ 05-12-2019, 15:48)
еxtensibility - лесно се добавят и махат нови неща

Трудно ли се добавя колона а пък защо изобщо бихме махали някога нещо icon_smile.gif


--------------------
I find your lack of faith disturbing
PM
Top
Gamma Goblin
Публикувано на: 05-12-2019, 20:39
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3199
Регистриран на: 21.02.18



QUOTE (dvader @ 05-12-2019, 18:52)
QUOTE (Gamma Goblin @ 05-12-2019, 15:48)
еxtensibility - лесно се добавят и махат нови неща

Трудно ли се добавя колона а пък защо изобщо бихме махали някога нещо icon_smile.gif

Трудно се добавя защото локва таблицата icon_smile.gif Ако искаш 99.999 ъптайм не е умно да махаш/добавяш колони. Също ако миграцията се омаже поради някаква причина е много по-лено да се възстанови предишното състояние на базата.


--------------------
https://www.rust-lang.org/
---
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
--
"Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 05-12-2019, 20:53
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2689
Регистриран на: 17.01.17



Представи си, 10-20 таблици в които ги има тия данни и решиш да добавиш поле. Трябва да редактира всяка таблица. После трябва да редактираш всички заявки които ги манипулират тия данни.
Или пък имаш поле с check constraint и промениш филтъра (да речем, добавяш формат).

Вместо да направиш само една промяна то трябва да препипаш цялата база данни и цялата кодова база за да си сигурен, че промяната е отразена навсякъде.
Също така, има вариант при които вмъкването на данни е във формат insert into tbl values (....) и добавянето на поле би убило заявката (ако я прави софтуер който не е под твой контрол това е недопустимо).

Та варианти за релация 1:1 има много и реално такива релации се ползват често.

Пример от тая база данни - имаш таблици които описват продажби, имаш таблици които описват сторно операции. Тия таблици включват различни данни но трябва да включват и данни за фискалния документ който е издаден към тях (номер ФУ, номер ФП, номер документ, дата, час, сума...). Та релацията с таблицата с документите ми е 1:1. Така получавам възможност за извличане на всички фискални документи с обхождане на една таблица. В противен случай се минава през union.

Практически няма нищо сложно но добрия дизайн на базата данни спестява доста хамалогия в последствие. Затова и зорът ми с тия UDT е да докарам четенето и записът на тия данни до един ред (не, че е трудно да го направя с 30 например).
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 05-12-2019, 21:27
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3199
Регистриран на: 21.02.18



споредм мен е най-добре да ползваш jsonb ако драйвера го поддържа


--------------------
https://www.rust-lang.org/
---
https://ncase.me/trust-bg/
---
Misanthropy is the general hatred, dislike, distrust or contempt of the human species or human nature. A misanthrope or misanthropist is someone who holds such views or feelings.
--
"Не може да си на висок пост без да си подкупен. Ще те махнат." - SuN Трола
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 08-12-2019, 09:16
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2689
Регистриран на: 17.01.17



Оставих го с udt. Така или иначе, си има "оперативни" данни в които първо се прави директен запис (upsert) преди да се запише самия документ, та просто създадох няколко функции които по ид връщат съответния запис. Така хем го докарах до един ред, хем си запазих възможността да ползвам сесийните параметри за да задавам стойности по defaut за доставчик, търговски обект и потребител.

SQL
insert into t3 values (get_partner_by_id(?))


С четенето си остава мотиката, но в края на краищата не е чак такава болка. Пък и винаги има надежда, че спецификациите на jdbc ще бъдат имплантирани в официалния драйвер.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0