Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
Доброго времени суток

Появилась задача перенести "пару" таблиц c кодярником из oracle в mssql.
Гуру MS, подскажите плз, взлетит или даже не пробывать?

Суть задачи:
В oracle есть таблица - хранилище сигналов (условно table1)
Первое поле - ddate timestamp(1) - по нему первичный ключ (primary key) + 900 полей - col1..col900 тип number
create table table1
(
  ddate  TIMESTAMP(1) not null,
  col1 NUMBER,
  col2 NUMBER,
  ....
  col900 NUMBER
)

С периодичностью 100 мсек пишутся рандомные наборы сигналов (обычно не превышает 150-200), которые записываются в соответствующие поля из col1..col900, в поле ddate записывается время в формате timestamp, остальные в наборе col1..col900 равны NULL.

Выборка осуществляется запросом типа
select t.ddate , t.col150
from table1 t
where t.ddate between to_date('11.04.2016 15:00:00','dd.mm.yyyy hh24:mi:ss') 
                  and to_date('11.04.2016 16:00:00','dd.mm.yyyy hh24:mi:ss')
  and t.col150 is not null
order by t.ddate 


Вопрос:
Oracle за счёт того, что не хранит null и считывает данные столбцами, выполняет запрос за миллисекунды. Взлетит на MS-SQL эта архитектура? Как MS работает с null и считывает данные при аналогичной таблице и запросе?
14 апр 16, 13:12    [19056153]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей_12345
взлетит или даже не пробывать?

Вы про перенести данные или о чем то большем ?

Алексей_12345
Как MS работает с null и считывает данные при аналогичной таблице и запросе?

Работает или хранит ?
14 апр 16, 13:15    [19056164]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
Под новый проект рассматривается выделение вместо оракуля мсскл, так что не переносить данные, а развернуть аналогичную архитектуру, которая уже будет заполняться новыми данными .

Вопрос том, будет ли такая архитектура работать в MS с приемлемой скоростью.
14 апр 16, 13:19    [19056187]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
Glory
Алексей_12345
взлетит или даже не пробывать?

Вы про перенести данные или о чем то большем ?

написал выше

Алексей_12345
Как MS работает с null и считывает данные при аналогичной таблице и запросе?

Работает или хранит ?


И обрабатывает и хранить.

Если MS хранит по другому, то существенно вырастит требование под место.
Если считывает данные по другому, то запросы могут стать тормозными

И как итог, не взлетит.
14 апр 16, 13:22    [19056203]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей_12345
Вопрос том, будет ли такая архитектура работать в MS с приемлемой скоростью.

Вы архитектурой называете вот эти таблицу и запрос ?
А приемлимая скорость - это сколько для вас ?

Что мешает сделать таблицу, заполнить ее данными и протестировать время выполнения запроса ?
14 апр 16, 13:23    [19056211]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей_12345
И обрабатывает и хранить.

Хранение зависит от типа данных и от версии и редакции сервера. Разумеется данные можно сжимать. Но ничего неи бывает бесплатно
14 апр 16, 13:25    [19056221]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7869
Алексей_12345,

какая разница - как хранит и как считывает? Это неверная оценка. Для выборок указанного типа создаются покрывающие индексы, например, которые и обеспечивают быстрый поиск данных.
Сделайте кластерный индекс по to_date, как раз для такого случая.
14 апр 16, 13:30    [19056257]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
Glory
Алексей_12345
Вопрос том, будет ли такая архитектура работать в MS с приемлемой скоростью.

Вы архитектурой называете вот эти таблицу и запрос ?
А приемлимая скорость - это сколько для вас ?


на существующей бд oracle пользователь в клиентском приложении выбирает сигнал выбирает интервал и результат отображается графиком "моментально". Время выборки за любой час (хранение год) по любому сигналу - менее секунды(0,2-0,6 сек)

Glory
Что мешает сделать таблицу, заполнить ее данными и протестировать время выполнения запроса ?


Время и то, что нет ни знаний по MS, ни БД под рукой (лень).
14 апр 16, 13:31    [19056259]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей_12345
Время выборки за любой час (хранение год) по любому сигналу - менее секунды(0,2-0,6 сек)

На каких объемах всей таблицы и выбираемых данных?


Алексей_12345
Время и то, что нет ни знаний по MS, ни БД под рукой (лень).

Вы хотите, чтобы это кто-то сделал за вас ?
14 апр 16, 13:34    [19056280]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Хоть бы справку краткую привели - что такое TIMESTAMP(1).
NUMBER - аналог FLOAT что ли?

Простите за некомпетентность в Oracle.
14 апр 16, 13:45    [19056371]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
iap
Хоть бы справку краткую привели - что такое TIMESTAMP(1).
NUMBER - аналог FLOAT что ли?

Простите за некомпетентность в Oracle.


TIMESTAMP(1) - формат даты с десятыми долями сек

15.01.2016 06:54:20,0
15.01.2016 06:54:20,1
15.01.2016 06:54:20,2
и т.д.

NUMBER -A decimal number with up to 38 significant digits in the range of -(10**125) to +(10**125)

По размерам таблицы+индекса и "плотности" заполнения, скок значений/сколько null и т.п. до завтра наверно статистику насобираю.

на бд, которую анализирую - глубина хранение 90 дней, кол. строк - 66 756 605
14 апр 16, 14:00    [19056483]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Алексей_12345
NUMBER -A decimal number with up to 38 significant digits in the range of -(10**125) to +(10**125)
Что, реально нужен numeric(38)?
Если да, то вы не сможете создать в MS SQL таблицу с 900-ми столбцами такого типа.
14 апр 16, 14:06    [19056523]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Правда можете столбцы сделать SPARSE.
14 апр 16, 14:09    [19056542]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
и такую последовательную точность , как ваш оракловый TIMESTAMP, вам не получить
14 апр 16, 14:15    [19056591]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
invm
Правда можете столбцы сделать SPARSE.


Реальные значения , какие пока нашёл от - xxx до + xxxxx.уу ( 2 знака после запятой)
14 апр 16, 14:18    [19056622]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
iljy
Member

Откуда:
Сообщений: 8711
Konst_One
и такую последовательную точность , как ваш оракловый TIMESTAMP, вам не получить


Эммм.... Это почему??? Банальный DATETIME даст вам точность +-3мс, можно прямо использовать DATETIME2(1), в чем проблема?
14 апр 16, 14:21    [19056651]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
Konst_One
и такую последовательную точность , как ваш оракловый TIMESTAMP, вам не получить


На TIMESTAMP(1) висит первичный ключ. Тоесть на MS надо будет отдельно столбцы под Date и числовое под миллисекунды сделать? И затем составной уникальный индекс из полей Date + nMs?
14 апр 16, 14:22    [19056658]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Алексей_12345
Member

Откуда:
Сообщений: 31
iljy
Konst_One
и такую последовательную точность , как ваш оракловый TIMESTAMP, вам не получить


Эммм.... Это почему??? Банальный DATETIME даст вам точность +-3мс, можно прямо использовать DATETIME2(1), в чем проблема?


Спс, вместо TIMESTAMP(1) просто DATETIME2(1) и первичный ключ на него?
14 апр 16, 14:23    [19056666]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
datetime2 подойдёт, но datetime точно не соответствует требуемому
14 апр 16, 14:24    [19056673]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
iljy
Member

Откуда:
Сообщений: 8711
Konst_One
datetime2 подойдёт, но datetime точно не соответствует требуемому


В чем именно?
14 апр 16, 14:31    [19056714]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Алексей_12345
Реальные значения , какие пока нашёл от - xxx до + xxxxx.уу ( 2 знака после запятой)
Вот, для начала, и определитесь с диапазоном возможных значений. Затем подберите подходящий тип данных и оцените поместятся ли 900 значений такого типа в строку (максимальный размер строки в MS SQL - 8060 байт).

Если поместятся и у вас SQL Server 2014 Enterprise, то может посмотреть в сторону clustered columnstore индекса.
14 апр 16, 14:32    [19056725]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
iljy
Konst_One
datetime2 подойдёт, но datetime точно не соответствует требуемому


В чем именно?


datetime (Accuracy Rounded to increments of .000, .003, or .007 seconds)
если алгоритм у ТС обеспечит нужную задержку при вставке, чтобы не возникало одинаковых значений в 1 секунду времени, то проблем нет
14 апр 16, 14:37    [19056752]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
iljy
Member

Откуда:
Сообщений: 8711
Konst_One
iljy
пропущено...


В чем именно?


datetime (Accuracy Rounded to increments of .000, .003, or .007 seconds)
если алгоритм у ТС обеспечит нужную задержку при вставке, чтобы не возникало одинаковых значений в 1 секунду времени, то проблем нет


у него точность 0.1 секунды, т.е. 100мс.
14 апр 16, 14:39    [19056767]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
https://msdn.microsoft.com/ru-ru/library/ms187819(v=sql.120).aspx
вот этот раздел пусть внимательно почитает: Округление типа данных datetime до долей секунды

ЗЫ
поэтому для его задачи удобней datetime2(1)
14 апр 16, 14:40    [19056770]     Ответить | Цитировать Сообщить модератору
 Re: Миграция c Oracle на MS-SQL  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Алексей_12345,

извиняюсь за возможно глупый вопрос для Оракла, но почему не так?
create table table1
(
  ddate  TIMESTAMP(1) not null,
  col_type NUMBER,
  col_value NUMBER
)


если конечно запросы только такого вида бывают.
автор
select t.ddate , t.col150
from table1 t
where t.ddate between to_date('11.04.2016 15:00:00','dd.mm.yyyy hh24:mi:ss') 
                  and to_date('11.04.2016 16:00:00','dd.mm.yyyy hh24:mi:ss')
  and t.col150 is not null
order by t.ddate 
14 апр 16, 14:43    [19056787]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить