powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Курс молодого бойца по Терадате
25 сообщений из 30, страница 1 из 2
Курс молодого бойца по Терадате
    #40026479
Объясните пожалуйста, желательно как противопоставление MS SQL, что такое в Терадате база данных?
Я только поднял Терадата 17 виртуалку и подсоединился к ней через их студию, и вижу:
Баночка DBC
Под ней человечки All...Dbc...итд и другие иконки вроде схем из DB2.
Что из них что? Легенды к этому дереву я что-то пока не нашёл.

Итак, в MS SQL мы создаём сколько угодно баз сколько хотим, и приложение может пользоваться одной или несколькими базами.
В iSeries база всего одна. В Оракле база или одна или мультитенант. А какая обычно практика тут, в Терадате?

Идея заключается в том, что мне нужно сделать так, чтобы небольшому приложению было где держать его 3-4 таблицы и пару хранимых процедур, которые совершенно независимы от любого бизнес-приложения, с которым это будет работать (тихо смотреть, чтобы его компоненты не падали в обморок и уведомлять по MQ если упали. Вот и думаю, где на Терадате это лучше держать: в своей схеме, в своей базе, итд.

Спасибо!
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40026488
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ,

Ну так и в Терадате аналогично - CREATE DATABASE ...
Насколько я помню, DATABASE - это схема, не привязанная к учетной записи.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40026917
То есть никого не удивит, что приложение требует свою отдельную маленькую базочку?
Если так - хорошо.
Спасибо!

Ещё вопрос: мне нужно хранить в колонке текущее время без часового пояса. Ну такая вот чудная программа, что не нужен ей пояс и всё тут. Что-то не врубился: тип TIME без пояса есть, а функции для его заполнения нет? Попробовал я просто создать колонку типа TIME(3) и положить в неё CURRENT_TIME, но всё равно в неё ложатся значения без милисекунд. Нужна нормальная функция, чтобы с клиента не приходилось совать время.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40026923
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027005
Что-то не складывается на том сайте.

Код: sql
1.
2.
select current_timestamp(0) as c0, current_timestamp(6) as c6;
--2020-12-10 19:22:08-05:00,2020-12-10 19:22:08.210000-05:00



У них в результате current_timestamp(6) отсутствует часовой пояс. На самом деле он там есть, и в колонку типа TIME он не ложится.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027061
А что, схемы в Терадате не используюся?
Код: sql
1.
select * from dbc.functionsv where databasename = 'test' and functionname = 'HASH_MD5';


в результате не содержится поля для схемы, только для базы.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027066
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
схемы в Терадате не используюся?
используются

гомодиализ
Код: sql
1.
databasename = 'test'

Это и есть схема
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027076
чем база данных отличается от схемы?
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027081
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
чем база данных отличается от схемы?
Могу наврать, давно это было... Схема привязана к пользователю (как в Оракле), а база - нет.
С точки зрения выполнения SQL-запросов никакой разницы.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027082
Вот я и пытаюсь понять, чем традиционно пользуюся специалисты по Терадате: базами или схемами.
Когда я создаю базу, то сразу создать и пользователя с таким же именем невозможно. В доке написано что и CREATE DATABASE и CREATE USER то же самое что CREATE SCHEMA в ANSI. Выходит, схем не существует?
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027084
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
Когда я создаю базу, то сразу создать и пользователя с таким же именем невозможно.
Конечно, имя должно определять что-то одно. У них же одна область видимости в SQL.
Если написать запрос SELECT * FROM aaa.bbb, то aaa - это может быть и базой, и схемой.


гомодиализ
традиционно пользуюся специалисты по Терадате: базами или схемами.
Я имел дело только с одной терадатой.
Там в базах лежали боевые данные (ну или их тестовые копии, если это тестовый стенд), а в личных схемах пользователи могли создавать свои личные таблицы для каких-то своих нужд.
Что, на мой взгляд, логично, т.к. пользователи приходят и уходят, а база должна жить дальше.
Впрочем, если завести схему и никому не говорить пароль от нее, то по сути будет та же схема.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027089
А под Терадатой можно пользоваться блоками, как под DB2:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
  declare sqlst varchar(1000)
  set sqlst = 'drop table ' || 'user1' || '.' || 'test';
  if exists(select 1 from dbc.TablesV where databasename = 'user1' and tablename = 'test' and tablekind = 'T') then
    prepare s from sqlst;
    execute immediate s;
    deallocate prepare s;
  end if;
end;



У меня Терадата Студио почему-то даже не пытается выполнить этот блок. Просто ничего не делает: ни ошибки, ничего вообще.

Мне для юнит тестов нужно покоцать все объекты, чтобы убедиться что прога воссоздала их. Вроде все предпосылки для этого существуют: IF EXISTS, PREPARE, EXECUTE [IMMEDIATE]. Пробовал в begin/end блоке и без него, результат один: выполнения не происходит. Хотя если выделить соседний селект или создание таблицы, тут же выполняются. Пробовал и просто:

Код: sql
1.
2.
3.
4.
5.
if exists(select 1 from dbc.TablesV where databasename = 'user1' and tablename = 'test' and tablekind = 'T') then
    prepare s from 'drop table ' || 'user1' || '.' || 'test';
    execute immediate s;
    deallocate prepare s;
  end if;



Она что, не умеет вне процедур или макросов исполнять больше одного SQL выражения?
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027095
Ещё немного стрёмно, что .NET connector ExecuteScalar() возвращает int на SELECT COUNT(). Вроде во всех взрослых базах это будет long. И это для базы, которая кичится своими тера-пета-эксабайтами.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027099
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
Она что, не умеет вне процедур или макросов исполнять больше одного SQL выражения?
Анонимных процедур вроде бы нет, насколько я помню.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027100
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
Ещё немного стрёмно, что .NET connector ExecuteScalar() возвращает int на SELECT COUNT(). Вроде во всех взрослых базах это будет long. И это для базы, которая кичится своими тера-пета-эксабайтами.
"Кичится" тут ни причем. Просто не самый удачный тип данных по умолчанию.
Попробуйте так:
Код: sql
1.
SELECT CAST(COUNT(*) AS BIGINT) AS cnt FROM mytable
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027101
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ,

Кстати, вот вам еще сюрприз:
Код: sql
1.
2.
3.
SELECT 'AB' as f
UNION ALL
SELECT 'XYZ' as f
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027141
союзы без таблиц не умеет? да, заметил. народ ещё спрашивает, а где dual или sysdummy1, а им облом.

Что-то я индексы не вкурил. Обычные индексы называются вторичными. К чему это?
join индексы - это типа материализованных вьюшек? он их подсовывает вместо соответствующих запросов, что ли?
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027147
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
союзы без таблиц не умеет?
Умеет (хотя я написал неверно, да), прикол не в этом.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027148
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
Что-то я индексы не вкурил. Обычные индексы называются вторичными. К чему это?
Потому что существуют первичные индексы, которые работают иначе.
И первичный индекс не связан с первичным ключом, в отличие от других СУБД.

Возьмите у коллег книжку с концепциями Терадаты и почитайте. Это выйдет куда производительнее и полезнее, чем точечные вопросы на форуме задавать.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027162
форумы существуют, чтобы не эксперты могли спросить у экспертов
я не собираюсь становиться экспертом по терадате, потому что всё, что от меня требуется, это создать 3 таблицы и 4 процедуры, а дальше я забуду про это, как про страшный сон.
все книжки уже лежат у меня на рабочем столе, но прочитать их за несколько дней вне пределов человеческих возможностей.
и коллег кроме этого форума у меня нет.
вот так-то.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027190
Вот в документации например объясняется на видном месте, зачем она создаёт не только таблицу, которая в запросе CREATE TABLE, но ещё рядом создаётся такая же, только заглавными буквами и с _0 на конце, но не на каждую таблицу, а только на некоторые? Мне перелопачивать тысячи страниц, чтобы узнать это, или может быть спросить тех, кто знает и получить прямой ответ сразу?

Они не содержат одних и тех же данных (вставка в созданную мной таблицу не приводит к появлению тех же данных в _0)
У _0 отсутствуют PK и FK, которые есть у созданной мной таблицы.
Что это?
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027214
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
и коллег кроме этого форума у меня нет.
Тогда я не понимаю, зачем у вас в руках оказалась Терадата.
Она имеет смысл на больших объемах, сотнях узлов хранения (AMP-ы) и т.д.
Что тянет за собой большие команды по разработке, администрированию и т.п.

Предлагаю взять что-нибудь более традиционное.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027216
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
рядом создаётся такая же, только заглавными буквами и с _0 на конце, но не на каждую таблицу, а только на некоторые
Никогда не встречал и даже не слышал про такое.
гомодиализ
чтобы не эксперты могли спросить у экспертов
я точно не эксперт по Терадате. И даже не знаю, есть ли таковые на форуме. Повторюсь, у Терадаты довольно узкая ниша применения, в которой обмен опытом строится иначе - через коллег, фирменную литературу и документацию, учебные курсы (как внутри организации, так и от самой Терадаты).
гомодиализ
прочитать их за несколько дней вне пределов человеческих возможностей.
Прочитать про виды индексов можно за 2-4 дня не напрягаясь. Там самое сложное - это концепция AMP-ов и первичного индекса.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027224
miksoft
Тогда я не понимаю, зачем у вас в руках оказалась Терадата.

А она не оказалась и не у меня в руках.

miksoft
Предлагаю взять что-нибудь более традиционное.

Я ничего не беру и не могу. Мне дают.

miksoft
Никогда не встречал и даже не слышал про такое.

А я вот столкнулся.

miksoft
Прочитать про виды индексов можно за 2-4 дня не напрягаясь.

и по всем вопросам накрутится чтения на месяцы.
...
Рейтинг: 0 / 0
Курс молодого бойца по Терадате
    #40027237
Почему даже после команды
Код: sql
1.
grant all on user1 to user11 with grant option;


она мне ругается:
Код: sql
1.
[Teradata Database] [3523] PROC2:An owner referenced by user does not have EXECUTE FUNCTION access to user1.hash_md5.


Или это одно из тех самых сообщений, которые скрывают истинную причину ошибки?
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Курс молодого бойца по Терадате
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]