|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Было несколько задач, которые потребовали создания новых вспомогательных таблиц. Посмотрел как сделаны другие похожие, сделал однотипно: натуральное число для id строки, автоинкремент из сиквенс объекта, и т.д. Все работает, дизайн совпадает, все довольны. А вот интересно, какие ещё бывают методы назначения id? Оракл позволяет длинные числа, вполне можно было бы структуризовать id. Ну например: последние три-четыре цифры содержат тип строки (или номер таблицы). Вполне могло бы помочь при отладке, если id строк передаются векторами для обработки. Спросил у знакомого, который с sql работает давно, со всеми кроме оракла. Он поделился, что у него везде GUID для идентификатора строки. Он так привык, и вероятность ошибочного повторного использования id,или дёрнуть строку не из той таблицы сведена к нулю. Вариантов масса, вот ещё один: сквозная нумерация всех строк в схеме на основе одного сиквенса, и дробная часть говорит о типе объекта (.1 - строка из таблицы товаров, .13 - из таблицы выпечки, .136 - таблицы тортов) Кто-то видел или пользовался подобными приемами, чтобы id строки нес смысловую нагрузку, полезную для кодера? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 07:28 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, для кодера [i]не может быть [/i] смысловой нагрузки. Кодер, крутящий свою гайку со смыслом - либо саботажник, либо прямой вредитель. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 07:43 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
booby, Слово кодер считается оскорбительным? Не знал. Хорошо, пусть будет архитект системы. СтОит ли архитектору внедрять id со смыслом, чтоб потом отладчикам было легче баги ловить, а также уменьшить последствия некоторых типов ошибок кодеров? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 08:57 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
На архитектора ты не тянешь Да и на кодера так себе Скорее, как на ребенка, которому дали новую большую игрушку Но и не рассказали что для битья орехов существует более простой инструмент Использование ID для предоставления дополнительной информации о конкретном объекте далеко не нова Тут есть как плюсы, так и минусы. Из минусов сразу: -- одна (или мало) последовательность на все, может возникнуть конкуренция, особенно это выстрелит при массовых закачках и RAC. Тут можно поспорить, установить большой кеш, при массовых загрузках генерировать ID на основании ROWNUM и начального значения последовательности, а ее сдвинуть сразу на верхнюю оценку количества вставляемых строк -- как правило, ID становится фиксированной и не маленькой длины. Т.е. он сразу занимает, например, 10 байт, в то время как при обычной нумерации он шел бы до такого размера десяток лет У нас используется в одной системе подобный подход -- там включается дата и место (филиал) создания строки -- вещь не очень точная, но достаточная, например, для выбора критерия секционирования, если нет других Или для приблизительной аналитики "кто, где и когда" Есть ее небольшое расширение, когда включается ID столбца (по которому можно определить и табличку) -- это в случае привязанных подчиненных строк Но такие решения принимались именно под конкретное место системы в общем зоопарке систем для более прозрачной синхронизации друг с другом Использование GUID ставит в этом случае больше проблем, чем решает. Во первых это накладней по производительности, да и по размеру (опять же фиксированный объем) и он не дает никакой выгоды в части дополнительной информации -- ни упорядоченности по дате ни еще по другому признаку. Ну и как-то я сомневаюсь, что никогда не будет коллизий ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 09:27 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQLОн поделился, что у него везде GUID для идентификатора строки. Он так привык, и вероятность ошибочного повторного использования id,или дёрнуть строку не из той таблицы сведена к нулю. Не к нулю. С GUID надо всегда обрабатывать нарушения ключа при вставке и повторять операцию с новым GUID. Есть у него и другие неприятные свойства в виде тормозов при работе с индексами. Но в распределённых системах он работает надёжнее всех остальных методов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 13:21 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL Оракл позволяет длинные числа, вполне можно было бы структуризовать id. Ну например: последние три-четыре цифры содержат тип строки (или номер таблицы). Вполне могло бы помочь при отладке, если id строк передаются векторами для обработки. Начните наконец изучать теорию. Числовой идентификатор это суррогатный ключ, внести в него значения атрибутов можно, в случае когда это принесет хороший профит, вам об этом думать в ближайший год (учитывая ваши уникальные способности возможно два года) не стоит. НеофитSQL Спросил у знакомого, который с sql работает давно, со всеми кроме оракла. Он поделился, что у него везде GUID для идентификатора строки. Он так привык, и вероятность ошибочного повторного использования id,или дёрнуть строку не из той таблицы сведена к нулю. GUID имеет достаточно большой размер, он съедает больше ресурсов, и помимо уже перечисленных выше в теме недостатков он также неудобен для человека, например, у вас есть небольшие справочники, техподдержка помнит простые коды наизусть, гуиды придется копипастить. У гуидов есть одно достоинство, их можно получить в приложении или другой подсистеме не обращаясь к СУБД, но и серьезный недостаток в виде возможных коллизий, которые нужно обрабатывать. НеофитSQL Вариантов масса, вот ещё один: сквозная нумерация всех строк в схеме на основе одного сиквенса В общем случае приведет к большему количеству блокировок на получении значения сиквенса и быстрому росту длины ключа, для всей схемы делать бессмысленно и вредно, в частных случаях применяется для однотипных объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 15:07 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, 3) любой sequence - ресурс. Работая с единственным вы создаете общесистемную точку конкуренции за ресурс. Так изредка делают, но почти всегда не для формирования ключей, а для предотвращения потери обновлений, например, в ситуации медленно меняющихся данных ( в целом, для ораклистов - обычно чуждая технология, в большинстве своем, они отказываются даже начинать понимать, о чём идет речь). 2) sys_guid в oracle возвращает тип raw(16). Конкретно с таким типом в качестве PK, могут быть проблемы вокруг административных задач, сорта export-import при наличии секционирования по такому полю - google в помощь. Иначе вам придется держать поле varchar(32). Это значит, что в стандартном индексном блоке на 8К, вы не сможете содержать более 170 ключей. Зато, наоборот, такой ключ сможет пристойно себя вести в среде с высокой конкуренцией. И, без сомнения, это часто выгодно глядящийся вариант при необходимости организации репликации. 1) В разумных пределах, делайте что-угодно. Понимайте только, что внедрение в суррогатный ключ бизнес-элементов, по Гамбургскому счёту, эквивалентно созданию собственной "механики последовательностей", с учётом того, что это - общесистемный ресурс. В средненагруженных случаях это может приносить пользу на поиске, и даже, до каких-то пределов, снимать борьбу сеансов за индексные страницы. В высоконагруженных - требует отваги и детального понимания производимых действий при создании общего для всех ресурса. Его нельзя будет обойти. Система будет работать со скоростью не выше производительности такого ресурса. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 15:38 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Прочитал ваши ответы. На роль архитектора в новой для меня области я не претендую, вопрос был "делают ли так", или это квадратура круга. Вижу что иногда делают. Во всех ответах услышал предостережение против единого сиквенса в смысле производительности. Об этом аспекте даже не думал, т.к. у меня в БД хорошо если раз в секунду новая строчка где-то появляется. А вот у других наверное сотни-тысячи в секунду. Что они с ними делают? Хранят? Это же десятки миллионов строчек в сутки. Про размер PK/ID тоже раньше не задумывался. Лишний десяток байт на строку казался пустяком для такого матерого продукта, но если у индексов свои ограничения, и надо байты экономить, то тогда нужно все таблицы с единицы начинать что ли? Неожиданно. Почитаю про лучшие практики, или как они там могут называться, "обычаи, традиции и церемонии". Два человека выразили опасения про коллизии GUIDов. Вспомнилась как я однажды пошутил на первое апреля, разослав всему отделу официальное письмо по инициативе переработке GUIDов. Типа, кто сгенерил и не пользуется - верните в систему согласно инструкции. Три человека из сотни купились, один с PhD. Кто-то наблюдал столкновение ГУИДов (исключая ошибки кода)? Какова вероятность столкновения ГУИДов для триллионных таблиц? Если она меньше чем вероятность случайного флипа одного бита памяти от гамма-всплеска в далекой галактике, я от таких вещей не защищаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 19:55 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Я, честно говоря, надеялся что ответы будут скорее типа "нет, ты что - эти 1,2,3,4 только в учебниках для читабельности. Еще со времен Оракла 8 народ начал использовать ID в формате ....., это удобно и эффективно" graycode > GUID имеет достаточно большой размер, он съедает больше ресурсов, и помимо уже перечисленных выше в теме недостатков он также неудобен для человека, например, у вас есть небольшие справочники, техподдержка помнит простые коды наизусть, гуиды придется копипастить. У гуидов есть одно достоинство, их можно получить в приложении или другой подсистеме не обращаясь к СУБД, но и серьезный недостаток в виде возможных коллизий, которые нужно обрабатывать. У меня... нет слов. Я даже не предполагал что кто-то в интерфейсе эти числа показывает. Как можно такое делать? Это же внутреннее поле для идентификации. Это как номер кластера на диске делать читабельным, чтоб пользователи его помнили легко :) Вон винда мне присвоила внутренний идентификатор {S-1-5-21-2857837166-2321590770-2796004104-1005}, глобально уникальный и неповторимый. И спрятала так, чтоб в UI такие страсти не показались там, где neophyte@domain вполне достаточно. Я спрашивал про размещение структурной инфы в ID, но это для тех, кто код пишет. Они не только глазами смотрят, а могут assert() кинуть в местах, чтобы шальные ID не забрели туда, где их не ждут. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 20:09 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQLКто-то наблюдал столкновение ГУИДов (исключая ошибки кода)? Где-то на этом форуме упоминались два программных продукта, неспособные установиться на одну винду потому что гуиды их СОМ-серверов совпали. Вероятность получить коллизию на триллионных таблицах зависит от способа генерации. Для полностью случайных гуидов (так они обычно генерятся на линухе) ты получишь минимум 3-4 коллизии на миллиард. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 20:29 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL У меня... нет слов. Я даже не предполагал что кто-то в интерфейсе эти числа показывает. Как можно такое делать? Это же внутреннее поле для идентификации. Это как номер кластера на диске делать читабельным, чтоб пользователи его помнили легко :) Мда, ты вообще не понимаешь о чем речь... Не в интерфейсе, а например в бэкенде, каким образом у сущности появится идентификатор из базы, не задумывался? Сотрудники техподдержки это не конечные пользователи. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 20:31 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov [ Вероятность получить коллизию на триллионных таблицах зависит от способа генерации. Для полностью случайных гуидов (так они обычно генерятся на линухе) ты получишь минимум 3-4 коллизии на миллиард. > минимум 3-4 коллизии на миллиард. [youtube= ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 04:50 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL со всеми кроме оракла. Прям вот со всеми, "который с sql"? DB2, Informix, Teradata, PostgreSQL, MySQL, SQLite, MS SQL, Firebird, Vertica, SAP Hana, Impala, Hive, Greenplum, Clickhouse ... И это только часть списка. И во всех знакомый использует guid? Не верю, пруфы в студию "со всеми". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 09:30 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
env НеофитSQL со всеми кроме оракла. Прям вот со всеми, "который с sql"? DB2, Informix, Teradata, PostgreSQL, MySQL, SQLite, MS SQL, Firebird, Vertica, SAP Hana, Impala, Hive, Greenplum, Clickhouse ... И это только часть списка. И во всех знакомый использует guid? Не верю, пруфы в студию "со всеми". Слышал в разговоре подчёркнутые, а также МариаДБ и какое-то чудо nosql. "Пруфы в студию", сейчас ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 17:23 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Ключей со смысловой нагрузкой - полно. Это коды стран. Валюты. Языки. Биржевые тикеры. URL/URN тоже вобщем ключи с смыслом. ISBN книг. Доменная структура крупной сети. Главное чтоб бизнес был ОК с таким подходом. И чтоб была внятная процедура разрешения коллизий. Например страна перестала существовать. Или переименовалась. Я-бы поверх таких маленьких справочников вводил битемпоральность (PERIOD FOR). Чтоб можно было спросить справочник - какой код валюты был у такой-то страны в 2005 году к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 21:03 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Ключей со смысловой нагрузкой - полно. Это коды стран. Валюты. Языки. Биржевые тикеры. URL/URN тоже вобщем ключи с смыслом. ISBN книг. Доменная структура крупной сети. Я согласен с вашим утверждением, но этот случай (когда в данных присутствует уникальный параметр годный для ключа) не рассматривал - он как бы саморешающийся. Мой вопрос был про данные, где кандидатов на PK нет, и нужно ввести свою колонку. Я понял, что в таких случаях большинство используют number тип, и нумеруют 1,2,3, чтобы сэкономить три килобайта памяти на первой тысяче строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 21:22 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL mayton Ключей со смысловой нагрузкой - полно. Это коды стран. Валюты. Языки. Биржевые тикеры. URL/URN тоже вобщем ключи с смыслом. ISBN книг. Доменная структура крупной сети. Я согласен с вашим утверждением, но этот случай (когда в данных присутствует уникальный параметр годный для ключа) не рассматривал - он как бы саморешающийся. Мой вопрос был про данные, где кандидатов на PK нет, и нужно ввести свою колонку. Я понял, что в таких случаях большинство используют number тип, и нумеруют 1,2,3, чтобы сэкономить три килобайта памяти на первой тысяче строк. Смотри. Если у тебя таблицы во 2 нормальной форме и выше - то у тебя есть потенциальный ключ. Высасывать из пальца это понятие для 1НФ (внешних данных или для сырых данных) - не стоит. Это потеря времени. Мне кажется ты уже поднимал этот вопрос в других форумах и это ничем не закончилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 21:31 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Я-бы поверх таких маленьких справочников вводил битемпоральность (PERIOD FOR) Tемпоральность. Битемпоральность это два измерения темпоральности (e.g. valid dates and effective dates). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 21:31 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
SY mayton Я-бы поверх таких маленьких справочников вводил битемпоральность (PERIOD FOR) Tемпоральность. Битемпоральность это два измерения темпоральности (e.g. valid dates and effective dates). SY. Не согласен. Думаю что у этого термина есть широкие (пока) определения. Я думаю что в статьях можно найти оба варианта как би-темпоральность. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 21:39 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton, Bitemporal validity tracks entity along two time axes simultaneously. Temporal validity tracks entity along single time axis. И вообще "bi" это два: бином ньютона, биметаллическая пластина, биссектриса, бисексуал... SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 22:15 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton ... Если у тебя таблицы во 2 нормальной форме и выше - то у тебя есть потенциальный ключ. Высасывать из пальца это понятие для 1НФ (внешних данных или для сырых данных) - не стоит.... mayton, попробуй прочитать внимательно. Помнишь три закона Ньютона в классической механике? Первый из них может рассматриваться (и, формально говоря, должен ), как определение контекста, котором работают оставшиеся два. Тогда формулировки всех трех законов окажутся такими: 1) существуют такие системы отсчёта, называемые инерциальными, в которых выполняются второй и третий законы. 2) траектория движения материальной точки в поле сил определяется дифференциальным уравнением второго порядка, вида a = F/m, где a - вторая производная траектории движения, F - поле сил, а m - собственная характеристика материальной точки, называемая массой. 3) при взаимодействии материальных точек 1 и 2 возникают парные силы взаимно обратного направления: F(1->2) = -F(2->1) Чтобы выполнился третий закон, первый (и больше никто, потому что больше некому) должен предоставить такую систему отсчёта, в которой пространство однородно, изотропно и зеркально симметрично. А чтобы выполнился второй закон, первый (и больше никто, потому что больше некому) должен предоставить такое пространство, в котором отсутствует поле сил в отсутствии тел. Этого, классического, мира просто не существует, если "не надо высасывать понятия первого закона из пальца". Аналогично , 1НФ, по сути, определяет то, что такое отношение. Ничего не надо "высасывать из пальца". Смысл формулировки такой - мы имеем дело и называем отношением только то, что имеет хотя бы один потенциальный ключ. Это очевидно значит, что ширина ключа не может превышать количество атрибутов в отношений. В противном случае то, что предъявляется, отношением не является . Все рассуждения о последующих нормальных формах производятся только в контексте, определяемом 1НФ. И именно она, по сути вводит определение ключа. Реляционная теория, это такая теория, полный контекст которой задаётся 1НФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 23:28 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton НеофитSQL пропущено... Я согласен с вашим утверждением, но этот случай (когда в данных присутствует уникальный параметр годный для ключа) не рассматривал - он как бы саморешающийся. Мой вопрос был про данные, где кандидатов на PK нет, и нужно ввести свою колонку. Я понял, что в таких случаях большинство используют number тип, и нумеруют 1,2,3, чтобы сэкономить три килобайта памяти на первой тысяче строк. Смотри. Если у тебя таблицы во 2 нормальной форме и выше - то у тебя есть потенциальный ключ. Если у меня уже есть ключ, я стал бы искать еще один ключ. Пример из недавнего опыта: внешние данные (поток событий) надо сохранить и присвоить PK, т.к. в данных уникального столбца нет. mayton Высасывать из пальца это понятие для 1НФ (внешних данных или для сырых данных) - не стоит. Это потеря времени. Мне кажется ты уже поднимал этот вопрос в других форумах и это ничем не закончилось. Это вполне нормальный ответ, его бы еще дополнить "вместо этого, используйте..." П.С. Про другие форумы не знаю, это единственный который мне порекомендовал мой русскоязычный старший коллега. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 00:51 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
booby 2) траектория движения материальной точки в поле сил определяется дифференциальным уравнением второго порядка, вида a = F/m, где a - вторая производная траектории движения, F - поле сил , а m - собственная характеристика материальной точки, называемая массой. Неужели в колледжах сейчас так учат? Докатились... Давайте не будем тут физику мучать, ньютона жалко. F - вектор силы. У силового поля размерность иная. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 00:58 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
В ERP Галактика id типа char(16) в hex формате первые байты озночают номер филиала предприятия. Используется для синхронизации баз. Можно завести документ в 1 месте, выгрузить изменения и отправить хоть по почте в остальные филиалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 05:59 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
istrebitel, Полезная инфа, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 08:01 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
SY mayton Я-бы поверх таких маленьких справочников вводил битемпоральность (PERIOD FOR) Tемпоральность. Битемпоральность это два измерения темпоральности (e.g. valid dates and effective dates). SY. Хорошо. Я не буду сильно настаивать. А как вы классифицируете timeseries db? Полу-темпоральность? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 09:58 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL mayton пропущено... Смотри. Если у тебя таблицы во 2 нормальной форме и выше - то у тебя есть потенциальный ключ. Если у меня уже есть ключ, я стал бы искать еще один ключ. Пример из недавнего опыта: внешние данные (поток событий) надо сохранить и присвоить PK, т.к. в данных уникального столбца нет. Если твой потоку событий проходит через некое програничное устройство или софт - то каждому событию можно присвоить метку времени (timestamp). Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде. Маловероятно что в 1 наносекунду ты зафиксируешь 2 события одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 12:30 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 13:20 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде. Давай рассмотрим 2 варианта. 1) Он получает время из системной функции CURRENT_TIMESTAMP() 2) Он получает время из какого-то внешнего источника. Мне кажется что в 1 варианте контракт будет посильнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 13:27 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton А как вы классифицируете timeseries db? Полу-темпоральность? Теоретически та же темпоральность где start = end. Но timeseries заточена под другие задачи так-что классифицировать timeseries с точки зрения темпоральности, IMHO, некорректно. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 15:30 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton, 0) sequence ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 15:36 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton НеофитSQL пропущено... Если у меня уже есть ключ, я стал бы искать еще один ключ. Пример из недавнего опыта: внешние данные (поток событий) надо сохранить и присвоить PK, т.к. в данных уникального столбца нет. Если твой потоку событий проходит через некое програничное устройство или софт - то каждому событию можно присвоить метку времени (timestamp). Точность - до 9 знаков вроде-бы. TIMESTAMP(9). Соответсвует нано-секунде. Маловероятно что в 1 наносекунду ты зафиксируешь 2 события одновременно. Я согласен что таймер высокого разрешения - это один из возможных методов генерации последовательных ID большого размерат со скромной смысловой нагрузкой (устанавливает последовательность, как 1-2-3, также даёт интервалы между вставками, редко полезно). В документации Оракла часто упоминается что функция sysdate может быть медленной. Если кто-то будет использовать TIMESTAMP для индекса, не забудьте сравнить его производительность с сиквенс. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 15:46 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL Если кто-то будет использовать TIMESTAMP для _уникального_ индекса То забудьте про встроенные функции и никогда не вставляйте более одной строки. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 15:56 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Однако, гуру Том убедительно советует против использования timestamp в качестве главного ключа. https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:312354500346307669 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:12 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQLгуру Том убедительно советует против Всё правильно, он же не неофит какой-нибудь. Ни timestamp, ни типы с плавающей запятой не стоит использовать в качестве ключа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:18 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, Для примитивной базёнки с единственным вяло вставляющим пользователем и заполнением поля типа timestamp в триггере - ружьё не выстрелит. Вставка будет успешно проходить. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но поддержка гарантированно проклянёт чудака, выбравшего такое решение. Ибо писать точечные запросы с "where чиселка = 123456789" куда проще нежели "where таймстамп = to_timestamp('значение с полной точностью', 'маска преобразования')" упд. А ещё надо помнить, что внешние драйверы доступа к данным могут по своему интерпретировать таймстмап или приводить его через неявные преобразования к промежуточному типу. Что может приводить к загадочному поведению приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:21 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQLгуру Том убедительно советует против Всё правильно, он же не неофит какой-нибудь. Ни timestamp, ни типы с плавающей запятой не стоит использовать в качестве ключа. Неофит - это я,слово неофит означает новичок. Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой. Вам, похоже, это пришлось узнать от меня. Постарайтесь не нападать на новичков без причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:26 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
env, ой вей, из мир - маска преобразования с указанием необходимой таймзоны это и есть - вшитое в ключ бизнес-правило. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:28 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL ...Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой.... ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:28 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Мне кажется что в 1 варианте контракт будет посильнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:30 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL а только поддерживает типы с плавающей точкой Приводя их к указанной размерности. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:30 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
env, 100 согласен насчёт "прокляття". Но если рассмотреть этот ключ не для точечных поисков а для диапазонных как в вышеупомянутых Timeseries dB, то вродебы летает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:31 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Del ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:31 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
env, Timestamp для меня не является привлекательным в смысле полезности (большая длина, малая смысловая нагрузка) и кроме того обладает недостатками которые описаны в статье Тома и участниками здесь. Кто-то это предложил, мы подробно обсудили. В целом, проигрывает sequence, также присутствуют грабли. В своем дизайне таблиц событий я использую сиквенс для PK, и sysdate с секундным разрешением - как атрибут времени. PK обеспечивает уникальность и очередность, в моем некластерном оракле сиквенс даёт монотонно растущую последовательность. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:35 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQLОднако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой. Ты не поверишь, но number это тип с фиксированной точкой. И тебе ещё многое, очень много предстоит узнать о загадочном миру компьютеров. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:35 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev НеофитSQL ...Однако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой.... ???? Select dump(id) from table "Integer" это всего лишь constraint. Значения целые, тип - плавающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:38 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, Тебе принесли 2 сорта птичьего молока. SysGuid, Timestamp. И тебе ничего не подошло. Вернулся к гречневой каше. На этом можно топик закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:43 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov & НеофитSQL, мне всегда казалось, что Number это BCD или ошибаюсь ? p.s. вроде не "чистое" BCD (т.к. не ровно 4 бита на знак), но арифметика должна быть BCD "подобная". IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:44 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevмне всегда казалось, что Number это BCD или ошибаюсь ? Это не BCD, но всё же scaled integer с фиксированной точкой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:45 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQLОднако, мне известно что мой Оракл 11.2 не поддерживает целые типы в таблицах,а только поддерживает типы с плавающей точкой. Ты не поверишь, но number это тип с фиксированной точкой. И тебе ещё многое, очень много предстоит узнать о загадочном миру компьютеров. Мне тут как-то неудобно. Ссылкой на доки тыкать не хочется, вы их наверняка читали. Вы подумайте: число number хранится как мантисса и экспонента. Какие числа хранятся таким способом? Не путайте тип данных, и тип значений. Значения могут быть негативные (со знаком минус), круглые (заканчивающиеся на ноль) нечётные, и т.д. значения не меняют тип number, который хранится с плавающей точкой. Вот в pl/sql есть настоящий целый тип, pls_binary, но в таблицу на 11.2 я его поместить не могу,таблицы умеют только number, IEEE/32 и IEEE/64 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:49 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQLВы подумайте: число number хранится как мантисса и экспонента. "Чо?" Теперь я просто требую ссылку на доку где такое написано. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:51 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL Dimitry Sibiryakov пропущено... Ты не поверишь, но number это тип с фиксированной точкой. И тебе ещё многое, очень много предстоит узнать о загадочном миру компьютеров. Мне тут как-то неудобно. Ссылкой на доки тыкать не хочется, вы их наверняка читали. Вы подумайте: число number хранится как мантисса и экспонента. Какие числа хранятся таким способом? Щас тебя будут бить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:52 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Dimitry Sibiryakov & НеофитSQL, мне всегда казалось, что Number это BCD или ошибаюсь ? p.s. вроде не "чистое" BCD (т.к. не ровно 4 бита на знак), но арифметика должна быть BCD "подобная". IMHO Я не знаю, есть ли официальное определение для BCD, имплементации оракла соответствует "неупакованному сотенному формату", где в каждом байте мантиссы лежит одна цифра основания 100. Это до ействительно похоже на неупакованный BCD, где в каждом байте содержится одна цифра основания 10, обладает многими свойствами BCD и вычисления также похожи. Экспонента (обязательная) закодирована в двоичном формате. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:59 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQLВы подумайте: число number хранится как мантисса и экспонента. "Чо?" Теперь я просто требую ссылку на доку где такое написано. https://docs.oracle.com/cd/A97630_01/appdev.920/a96584/oci03typ.htm "The first byte is the exponent and is followed by 1 to 20 mantissa bytes." ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:02 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton НеофитSQL пропущено... Мне тут как-то неудобно. Ссылкой на доки тыкать не хочется, вы их наверняка читали. Вы подумайте: число number хранится как мантисса и экспонента. Какие числа хранятся таким способом? Щас тебя будут бить. "В чем сила, брат?" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:03 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL mayton пропущено... Щас тебя будут бить. "В чем сила, брат?" Давай начнем от Адама и Евы. Ты знаешь почему существует разделение на научные типы данных и финансовые? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:27 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL Это до ействительно похоже на неупакованный BCD, где в каждом байте содержится одна цифра основания 10, обладает многими свойствами BCD и вычисления также похожи. Разницу с decimal128 ( IEEE 754-2008 ) указать сумеете? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:13 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL"The first byte is the exponent and is followed by 1 to 20 mantissa bytes." Действительно, они назвали scale мантиссой. Ок... Тем не менее это не отменяет факта, что number это таки scaled integer, а не floating-point. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:14 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov что number это таки scaled integer, а не floating-point. Number - классический floating point с десятичной степенью, decimal128. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:57 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
andrey_anonymous, откуда ты взял связь между NUMBER и decimal128 ? Последний даже по диапазону целой части не покрывает возможности NUMBER. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 20:06 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton andrey_anonymous, откуда ты взял связь между NUMBER и decimal128 ? Последний даже по диапазону целой части не покрывает возможности NUMBER. Table 3.7—Extended format parameters for floating-point numbers Ну и структура какбэ намекает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 20:27 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
andrey_anonymous Number - классический floating point с десятичной степенью, decimal128 * * а-ля decimal128 - очепятко, вводящее в заблуждение, сорри. Тут надо пояснить, что oracle number появился немного раньше IEEE 754-2008 и не может в точности ему соответствовать. Принцип, однако, тот же. Нормализованная BCD-мантиса, основание степени - 10. Из заметных отличий - мантисса переменной длины, сложности с поддержкой NaN и +-inf ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 21:11 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton НеофитSQL пропущено... "В чем сила, брат?" Давай начнем от Адама и Евы. Ты знаешь почему существует разделение на научные типы данных и финансовые? Я не знаком с таким терминами, но мне известно что number считается удобым для финансовых вычислений из-за точного представления десятичных дробей. NASDAQ такими глупостями не пользуется, у них в протоколе все цены целые, просто не в долларах а в базовых точках. (Basis points, надеюсь правильно перевел). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 21:41 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
andrey_anonymous НеофитSQL Это до ействительно похоже на неупакованный BCD, где в каждом байте содержится одна цифра основания 10, обладает многими свойствами BCD и вычисления также похожи. Разницу с decimal128 ( IEEE 754-2008 ) указать сумеете? Я не встречался раньше с форматом decimal-128, судя по названию он фиксированной длины. Это наверное одна из разниц. Спасибо за ссылку, почитаю вечером. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 21:49 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Хм... ну почти. Если 128 это длина разрядной сетки. И мы берем целое типа регистра SSE (который имеет точно длину 128 бит). То. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 21:52 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov НеофитSQL"The first byte is the exponent and is followed by 1 to 20 mantissa bytes." Действительно, они назвали scale мантиссой. Ок... Тем не менее это не отменяет факта, что number это таки scaled integer, а не floating-point. > scaled integer Не знаком с таким термином. Надеюсь, не придумали? С другой стороны, Оракл пишет: "Specify a floating-point number using the following form: NUMBER " ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:03 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
andrey_anonymous Из заметных отличий - мантисса переменной длины, сложности с поддержкой NaN и +-inf Я не знаю почему oracle решил не поддерживать NaN для типа number, но -+ бесконечность они пока ещё поддерживают, и арифметику с ними исполняют верно, даже печатают эти значения как следует, по крайней мере в 11.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:10 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Хм... ну почти. Если 128 это длина разрядной сетки. И мы берем целое типа регистра SSE (который имеет точно длину 128 бит). То. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
У вас ошибка в первой строчке. 38 десятичных цифр это примерно 126.2 бита. В 127 бит влезает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:22 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Что тебе непонятно в моих расчетах? Все - в целых числах. Можешь проверить на бумажке. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:36 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
mayton Что тебе непонятно в моих расчетах? Все - в целых числах. Можешь проверить на бумажке. Off by one > BigInt(10).pow(39) - 1 Там надо BigInt(10).pow(38) - 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:45 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Если уж быть занудой, то надо брать 40, ибо внутренне мантисса может занимать до 20 байт (и даже часто занимает) Oracle гарантирует точность в 38 знаков, но для обеспечения этой гарантии использует 39 знак, т.е. 20 байт мантиссы, а там уже место и для 40 знака есть И при хранении он точно также может использовать (да и использует) 40 знаков ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 06:05 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Если уж быть занудой, то надо брать 40, ибо внутренне мантисса может занимать до 20 байт (и даже часто занимает) Oracle гарантирует точность в 38 знаков, но для обеспечения этой гарантии использует 39 знак, т.е. 20 байт мантиссы, а там уже место и для 40 знака есть И при хранении он точно также может использовать (да и использует) 40 знаков Это так, мантисса может занимать до 20 байт памяти. Ее хватает для представления 38 цифр, т.к. 20й байт содержит сомнительные данные, которые не отображаются. 38 цифр (сомнительный довесок не в счёт) помещаются в 127 бит, о чем собственно и была речь. Разве не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 07:34 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL 20й байт содержит сомнительные данные, которые не отображаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 07:37 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Если уж быть занудой, то надо брать 40, ибо внутренне мантисса может занимать до 20 байт (и даже часто занимает) Oracle гарантирует точность в 38 знаков, но для обеспечения этой гарантии использует 39 знак, т.е. 20 байт мантиссы, а там уже место и для 40 знака есть И при хранении он точно также может использовать (да и использует) 40 знаков в блоке (на диске хранит) 39-40-й знак? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 11:38 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
И ты тоже это не проверил? Или дока от 7-ки для тебя единственный учебник? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Насколько помню я 8-ке было так же Да, создать поле точностью больше 38 нельзя, но про 20 байт, четное/нечетное количество знаков было еще на сайте у Steave Adams, по материалам 7-ки ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 12:00 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров И ты тоже это не проверил? Или дока от 7-ки для тебя единственный учебник? за dump забыл, чет сразу в дебри полез (блоки) на русском токо 7-ка есть (которую я точно читал) и курсы по 9-ке ожидал что будет округлять на 38-разряде, а ж нет 40-й берет id p1 p2 1,1/3,1/3 2,1/6,1/6 Код: plsql 1. 2. 3. 4. 5. 6. 7.
.... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 12:39 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров НеофитSQL 20й байт содержит сомнительные данные, которые не отображаются. Когда писал на ночь, не проверил. Подтвердил в документации, и отбросил цифры 39-40 как ненадежные. С утра проверил, собирался писать поправку. Поправка: в моих неполных экспериментах с 11.2, все 40 цифр честные как для вычислений, так и для хранений в таблицах. Например, я помещал в неквалифицированый тип number целые числа возрастающей разрядности, получил ровно 40, не больше не меньше: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Повторяющиеся нули в последних двух строчках обозначают потерю точности после 40 цифр. Мой вывод: по крайней мере в некоторых ситуациях Оракл способен точно хранить 40-значную десятичную мантиссу, как в таблице так и в памяти или переменной. Почему Оракл говорит не полагаться на последние две цифры для вычислений мне неизвестно. Возможно, во время некоторых вычислений Оракл не соблюдает 40-значную точность т.к. использует 128-битную мантиссу внутри для скорости. Полная проверка арифметики Оракла это немаленькая задача, поэтому оставляю такое предположение неподтвержденным. Итог: вопреки документации Оракла, цифры 39-40 не бесполезный довесок, а являются полноценными цифрами в целях хранения данных. 40-значная мантисса не помещается в 128-битное число, поэтому такое преобразование приведет к потери точности хранимых данных. На практике: можно забить и терять эти две цифры. Например: диаметр нашей галактики оценивается в 1е21 метров. Если кто-то считает "точную" длину окружности и потерял цифры 39-40 числа Пи, то они ошибутся на <1.5е-18 метров, что в двести раз меньше размера протона. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 17:26 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Stax в блоке (на диске хранит) 39-40-й знак? stax В моих проверках - хранит в таблице и распечатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 17:29 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, в этом и состоит существо проблемы , приводящей к тому, что не позаботившись об об этом вопросе самостоятельно, вы становитесь рабом однажды написанного конкретного выражения. У вас нет возможности "оптимизировать" его методом замены на другое. Современный стандарт поощряет вычисление с большей точностью, чем позволяет структура хранения, с требованием явного заявления способа округления промежуточного результата при записи в результирующее место хранения. В оные времена, столь ясного понимания, выраженного в виде требований стандарта к реализации не было. От чего и появилась "лучшая из возможных" реализация oracle number. ссылку на этот топик я уже давал, вы, судя по всему, не читаете: https://www.sql.ru/forum/1315510-a/peremena-mesto-mnozhitelya-v-vyrazhenii-imeet-znachenie В отсутствии встроенного стандартного решения, вопрос превращается в головную боль не так уж и редко. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 17:43 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
booby, Далеко мы отошли от темы. Вся чехарда с number началась с совета про 'избегайте типов с плавающей точкой для индексов". Сама тема - про то, как в ключи кто-то помещает полезную им информацию, а кто-то - 1-2-3, а кто-то - GUID. Мой вывод из этого разговора, что единственного верного метода нет, у каждого есть преимущества и недостатки. Лично я собираюсь продолжать 1-2-3 в своем проекте, потому что весь проект так сделан, значит стиль такой. То, что вы интересуетесь численными методами, это хорошо. Я довольно хорошо с ними знаком, ввиду учебной специальности. Оракл не идеальная среда для научных вычислений, но у number внушительный размер мантиссы, и если не торопиться, позволяет посчитать многие вещи топорными методами "в лоб" без использования особых приемов. Если вас занимают задачки по численным методам, можно новую тему открыть, в программировании. Например, вы знаете как нарисовать окружность (посчитать координаты точек окружности на растровом экране) не используя арифметические операции сложнее чем +/-? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 22:17 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL, Спасибо, нет, ничего открывать не надо. Если и когда понадобится, я сам открою топик и про Безенхема и про Горнера и про то, какая связь между ними. Сам по себе, любой алгоритм бесценен. Его реальная ценность проявляется там и тогда, когда он начинает применяться в области, к которой ранее его не додумывались применять. В своём огороде я потребности рисовать круги пока не наблюдаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 22:45 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
booby, ...Брезенхема... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 22:56 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Шикин и Боресков - Компьютерная графика. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 23:40 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL как нарисовать окружность (посчитать координаты точек окружности на растровом экране) не используя арифметические операции сложнее чем +/-? На переполнениях счетчиков легко. Но с погрушностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 10:47 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
НеофитSQL как нарисовать окружность не используя арифметические операции сложнее чем +/-? Нарисуйте окружность результатом sql-запроса, почему бы и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 10:51 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
Лучше сыграть в шахматы на sql-запросе. Но что-то мы далеко ушли от темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 11:13 |
|
Смысловая нагрузка идентификатора строчки
|
|||
---|---|---|---|
#18+
env НеофитSQL как нарисовать окружность не используя арифметические операции сложнее чем +/-? Нарисуйте окружность результатом sql-запроса, почему бы и нет Select 'O' from dual Давайте что-то посложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:35 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1880746]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
96ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 325ms |
0 / 0 |