powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Смысловая нагрузка идентификатора строчки
25 сообщений из 88, страница 2 из 4
Смысловая нагрузка идентификатора строчки
    #40014728
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
mayton

Я-бы поверх таких маленьких справочников вводил битемпоральность (PERIOD FOR)


Tемпоральность. Битемпоральность это два измерения темпоральности (e.g. valid dates and effective dates).

SY.

Хорошо. Я не буду сильно настаивать.

А как вы классифицируете timeseries db?

Полу-темпоральность?
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014791
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
mayton
пропущено...

Смотри. Если у тебя таблицы во 2 нормальной форме и выше - то у тебя есть потенциальный ключ.


Если у меня уже есть ключ, я стал бы искать еще один ключ.
Пример из недавнего опыта: внешние данные (поток событий) надо сохранить и присвоить PK, т.к. в данных уникального столбца нет.

Если твой потоку событий проходит через некое програничное устройство или софт - то
каждому событию можно присвоить метку времени (timestamp).

Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде.
Маловероятно что в 1 наносекунду ты зафиксируешь 2 события одновременно.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014816
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде.
Гранулярность и разрешение - разные вещи. Нет гарантий того, что за пределами второго-третьего знака "после запятой" будет "нечто, похожее на правду".
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014823
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде.
Гранулярность и разрешение - разные вещи. Нет гарантий того, что за пределами второго-третьего знака "после запятой" будет "нечто, похожее на правду".

Давай рассмотрим 2 варианта.
1) Он получает время из системной функции CURRENT_TIMESTAMP()
2) Он получает время из какого-то внешнего источника.

Мне кажется что в 1 варианте контракт будет посильнее.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014885
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

А как вы классифицируете timeseries db?
Полу-темпоральность?


Теоретически та же темпоральность где start = end. Но timeseries заточена под другие задачи так-что классифицировать timeseries с точки зрения темпоральности, IMHO, некорректно.

SY.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014892
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

0) sequence
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014895
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
НеофитSQL
пропущено...


Если у меня уже есть ключ, я стал бы искать еще один ключ.
Пример из недавнего опыта: внешние данные (поток событий) надо сохранить и присвоить PK, т.к. в данных уникального столбца нет.

Если твой потоку событий проходит через некое програничное устройство или софт - то
каждому событию можно присвоить метку времени (timestamp).

Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде.
Маловероятно что в 1 наносекунду ты зафиксируешь 2 события одновременно.


Я согласен что таймер высокого разрешения - это один из возможных методов генерации последовательных ID большого размерат со скромной смысловой нагрузкой (устанавливает последовательность, как 1-2-3, также даёт интервалы между вставками, редко полезно).

В документации Оракла часто упоминается что функция sysdate может быть медленной. Если кто-то будет использовать TIMESTAMP для индекса, не забудьте сравнить его производительность с сиквенс.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014898
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Если кто-то будет использовать TIMESTAMP для _уникального_ индекса

То забудьте про встроенные функции и никогда не вставляйте более одной строки.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> create table dropme_t1 (id number, dt timestamp);

Table created.

SQL> create unique index ix_dropme_t1 on dropme_t1 (dt);

Index created.

SQL> insert into dropme_t1 select level, localtimestamp from dual connect by level<=2;
insert into dropme_t1 select level, localtimestamp from dual connect by level<=2
*
ERROR at line 1:
ORA-00001: unique constraint (IX_DROPME_T1) violated
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014903
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Однако, гуру Том убедительно советует против использования timestamp в качестве главного ключа.

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:312354500346307669
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014906
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLгуру Том убедительно советует против

Всё правильно, он же не неофит какой-нибудь. Ни timestamp, ни типы с плавающей запятой не
стоит использовать в качестве ключа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014908
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Для примитивной базёнки с единственным вяло вставляющим пользователем и заполнением поля типа timestamp в триггере - ружьё не выстрелит. Вставка будет успешно проходить.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL>  create or replace trigger trg_dropme_t1_pseudoseq before insert on dropme_t1 for each row
  2  begin
  3      :new.dt := current_timestamp;
  4 end;
  5/

Trigger created.

SQL> begin
  2      for v in 1..1e6 loop
  3          insert into dropme_t1(id) values(v);
  4      end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.



Но поддержка гарантированно проклянёт чудака, выбравшего такое решение. Ибо писать точечные запросы с "where чиселка = 123456789" куда проще нежели "where таймстамп = to_timestamp('значение с полной точностью', 'маска преобразования')"

упд. А ещё надо помнить, что внешние драйверы доступа к данным могут по своему интерпретировать таймстмап или приводить его через неявные преобразования к промежуточному типу. Что может приводить к загадочному поведению приложения.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014910
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

НеофитSQLгуру Том убедительно советует против

Всё правильно, он же не неофит какой-нибудь. Ни timestamp, ни типы с плавающей запятой не
стоит использовать в качестве ключа.


Неофит - это я,слово неофит означает новичок.
Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой. Вам, похоже, это пришлось узнать от меня.

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

ой вей, из мир - маска преобразования с указанием необходимой таймзоны
это и есть - вшитое в ключ бизнес-правило.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014913
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

...Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой....

????
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014914
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мне кажется что в 1 варианте контракт будет посильнее.
Дата-время завязаны на календарь и обязаны работать с часами реального времени (с опорой на внешний источник синхронизации или без неё). Разрешение часов реального времени - доли микросекунд. Чисто аппаратно.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014915
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
а только поддерживает типы с плавающей точкой


Приводя их к указанной размерности.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> create table dropme_t2 (n number(1));

Table created.

SQL> insert into dropme_t2 values(0.99999999999999999999999999999999);

1 row created.

SQL> select * from dropme_t2;

         N
----------
         1
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014916
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

100 согласен насчёт "прокляття".

Но если рассмотреть этот ключ не для точечных поисков а для диапазонных как в вышеупомянутых Timeseries dB, то вродебы летает.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Del
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014918
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Timestamp для меня не является привлекательным в смысле полезности (большая длина, малая смысловая нагрузка) и кроме того обладает недостатками которые описаны в статье Тома и участниками здесь.

Кто-то это предложил, мы подробно обсудили. В целом, проигрывает sequence, также присутствуют грабли.

В своем дизайне таблиц событий я использую сиквенс для PK, и sysdate с секундным разрешением - как атрибут времени. PK обеспечивает уникальность и очередность, в моем некластерном оракле сиквенс даёт монотонно растущую последовательность.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014919
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLОднако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только
поддерживает типы с плавающей точкой.

Ты не поверишь, но number это тип с фиксированной точкой. И тебе ещё многое, очень много
предстоит узнать о загадочном миру компьютеров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014920
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
НеофитSQL

...Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой....

????


Select dump(id) from table

"Integer" это всего лишь constraint.

Значения целые, тип - плавающий.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014923
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Тебе принесли 2 сорта птичьего молока. SysGuid, Timestamp. И тебе ничего не подошло. Вернулся к гречневой каше.

На этом можно топик закрыть.
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014924
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov & НеофитSQL,

мне всегда казалось, что Number это BCD или ошибаюсь ?

p.s. вроде не "чистое" BCD (т.к. не ровно 4 бита на знак), но арифметика должна быть BCD "подобная". IMHO
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014926
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevмне всегда казалось, что Number это BCD или ошибаюсь ?

Это не BCD, но всё же scaled integer с фиксированной точкой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Смысловая нагрузка идентификатора строчки
    #40014929
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

НеофитSQLОднако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только
поддерживает типы с плавающей точкой.

Ты не поверишь, но number это тип с фиксированной точкой. И тебе ещё многое, очень много
предстоит узнать о загадочном миру компьютеров.


Мне тут как-то неудобно. Ссылкой на доки тыкать не хочется, вы их наверняка читали.

Вы подумайте: число number хранится как мантисса и экспонента. Какие числа хранятся таким способом?

Не путайте тип данных, и тип значений.

Значения могут быть негативные (со знаком минус), круглые (заканчивающиеся на ноль) нечётные, и т.д. значения не меняют тип number, который хранится с плавающей точкой.

Вот в pl/sql есть настоящий целый тип, pls_binary, но в таблицу на 11.2 я его поместить не могу,таблицы умеют только number, IEEE/32 и IEEE/64
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 2 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Смысловая нагрузка идентификатора строчки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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