Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Красота БД   Найти похожие ветки 

 
...   (2012-02-20 08:49) [0]

Нужно хранить в БД некоторое значение (дату последней выгрузки).
Что лучше:
1. Создать для этого таблицу с одним полем и одной строкой (ну можно добавить id, но смысла нет — если понадобится добавлять туда еще параметры, то они могут оказаться другого типа и лучше добавлять их новым полем, а не новой строкой).
2. Писать это значение каждый раз при insert-е в таблицу, которая в год может принимать тысячи строк? Т.е. делать 100 insert-ов вместе с датой, а при следующем обращении к базе выбирать самый последний, например, по id, и смотреть значение нужного мне поля?

PS: я за вариант 1 (даже как-то и не задумывался о том, что наличие лишней таблице может кого-то раздражать), но встретил серьезную критику (удалили мою таблцу, и не предупредили, что привело к долгому копанию в собственной программе чтобы определить, почему rfc не работает также, как некоторое время назад :) Но вопрос не о профессиональной этике, а о понятии «красота БД», которое очень относительно.


 
Красота-БД   (2012-02-20 09:04) [1]

удалили мою таблицу, и не предупредили
А что будешь делать, если удалили БД?
:)


 
Омлет ©   (2012-02-20 09:11) [2]

Совершенно не понятна суть задача: что, куда и зачем.

> которая в год может принимать тысячи строк

Страх-то какой.


 
...   (2012-02-20 09:18) [3]

> А что будешь делать, если удалили БД?

Обрадуюсь. Но они же ее восстановят.


> Совершенно не понятна суть задача: что, куда и зачем.

Я выгружаю данные в таблицу A. Мне нужно знать, за какую дату я произвел последнюю выгрузку. Для этого я могу:
1. Создать новую таблицу и записывать дату туда
2. Писать эту дату в выгружаемую таблицу A, добавив туда 1 поле, которое будет нужно только для того, чтобы сделать потом &laquo;select top(1) <поле> order by id desc&raquo;.


> Страх-то какой.

Не страшно (хотя все зависит от БД, но в данном случае это MS SQL SERVER, а для него это мелочи). Но не вижу смысла.  Тем более что сервер очень медленный (или загружен, или слабый, или Ксперский инсайт &#151; админы сервера не сообщают).


 
Омлет ©   (2012-02-20 09:21) [4]


> но встретил серьезную критику (удалили мою таблцу, и не
> предупредили, что привело к долгому копанию в собственной программе
> чтобы определить, почему rfc не работает также, как некоторое время назад


Table "dropped_table" doesn"t exist
Так долго искать причину..

И критиковал вас наверное тот самый Роберт )))
http://not-doing.ru/some/drop-table.png


 
...   (2012-02-20 09:25) [5]

> Так долго искать причину..

Долго, если раньше все работало и если среда разработки позволяет общаться с rfc функцией только посредством анализа целочисленного кода возрвата (на все случаи его не задать).


 
AV ©   (2012-02-20 09:25) [6]

1. Создать новую таблицу и записывать дату туда
но не одной строкой, а добавляя (id должен быть тоже)

> 2. Писать эту дату в выгружаемую таблицу A, добавив туда
> 1 поле, которое будет нужно только для того, чтобы сделать
> потом «select top(1) <поле> order by id desc».
но не дату, а id первой таблицы

а потом вдруг понадобится
проверить, работает ли выгрузка и как
писать отчет, сколько записей выгружалось в день/за день
еще какая ерунда


 
Омлет ©   (2012-02-20 09:26) [7]


> ...   (20.02.12 09:18) [3]

Если нужно знать, какие именно строки выгружались за конкретную дату, то да - необходимо еще одно поле с датой. Если за раз выгружается всего одна строка - то также, поле с датой. Если нет необходимости знать, какие именно данные были добавлены в такой-то день, а нужно знать только сам факт добавления записей - то отдельная таблица.


 
Омлет ©   (2012-02-20 09:29) [8]


> ...   (20.02.12 09:25) [5]
> > Так долго искать причину..Долго, если раньше все работало
> и если среда разработки позволяет общаться с rfc функцией
> только посредством анализа целочисленного кода возрвата
> (на все случаи его не задать).

Что это за rfc и среда разработки?


 
Inovet ©   (2012-02-20 09:48) [9]

> [0] ...   (20.02.12 08:49)
> но встретил серьезную критику (удалили мою таблцу

Что в критике говорилось?


 
...   (2012-02-20 10:01) [10]

> а потом вдруг понадобится

Эти данные нужны только для моего алгоритма. До того, как они мне потребовались, они были не нужны. Для них даже предложили использовать какую-нибудь другую БД, чтобы не портить &laquo;красоту&raquo;, настолько они не нужны :)


> Что это за rfc и среда разработки?

SAP. RFC &#151; это вызов удаленной функции, в данном случае SAP <-> SAP.


> Что в критике говорилось?

Одна таблица из 1 поля и 1 строки &#151; это плохо, не по правилам, нужно перенести в другую БД, которая у меня есть на этом сервере для другой программы.


 
Anatoly Podgoretsky ©   (2012-02-20 10:04) [11]

> Омлет  (20.02.2012 09:26:07)  [7]

Все хорошо, только непонятно зачем нужна отдельная таблица.


 
...   (2012-02-20 10:09) [12]

> [7] Омлет ©   (20.02.12 09:26)

Спасибо. В общем &#151; именно так и предполагал. Но было интересно знать &#151; нет ли действительно каких-то минусов и сложностей с использованием лишней таблицы. Т.к. слишком остро была встречена попытка ее добавления.


 
...   (2012-02-20 10:10) [13]

> [11] Anatoly Podgoretsky ©   (20.02.12 10:04)

У MS SQL ведь нет информации о последнем изменении таблиц (без каких-то специальных настроек &#151; такое точно не разрешат)? Есть только &laquo;refdate datetime Reserved for future use&raquo;. Или все же что-то есть?


 
Anatoly Podgoretsky ©   (2012-02-20 12:13) [14]

> ...  (20.02.2012 10:10:13)  [13]

Есть и бесплатно


 
MsGuns ©   (2012-02-20 13:40) [15]

1) У мс скл есть свои вполне надежные средства копирования-восстановления, которые можно включать как службу - т.е. база будет бэкапиться автоматически
2) Совмещение в одной программе двух РАЗНЫХ функций : пользовательской (клиентской) и админской - суть ламерство ибо этого делать нельзя ни в коем случае
3) Хранить только одну копию (последнюю) БД нельзя, как тут уже упоминалось, пользователь может обнаружить ошибку не сразу.  

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


 
MsGuns ©   (2012-02-20 13:41) [16]

Кстати, какое все это отношение имеет к сабжу, т.е. "красоте" ?


 
Anatoly Podgoretsky ©   (2012-02-20 14:54) [17]

> MsGuns  (20.02.2012 13:40:15)  [15]

Там не надо делать это ручками, только средствами системы и старые копии
тоже не надо ручками удалять.
А документация конечно мощная, свыше 30 мегабайт в сжатом виде, реально не
менее 100


 
AV ©   (2012-02-20 15:04) [18]

Да, системные вещи MSSQL отлично бэкапит, откатывает/накатывает..
только без головы там тоже не обойтись :)


> Хранить только одну копию (последнюю) БД нельзя, как тут
> уже упоминалось, пользователь может обнаружить ошибку не
> сразу.

+
а через пол-года. Реально такое было.
А копии (ежедневные) только за последние 2 недели настроено было иметь, а еженедельные - за два месяца..

вот тогда пригодятся ручные бэкапы, insert into на всю ночь,
и что б все срослось утром у бухов..


 
tesseract ©   (2012-02-20 19:54) [19]


> SAP. RFC — это вызов удаленной функции, в данном случае
> SAP <-> SAP.


А что в SAP нет стандартной синхронизации баз? Даже в 1с 7 есть. Кстати могу порекомендовать посмотреть на этот механизм. РИБ в 8.x сделан крайне грамотно.


 
...   (2012-02-21 08:08) [20]

> А что в SAP нет стандартной синхронизации баз?

Не знаю. Но в данном случае данные сперва обрабатываются, поэтому все равно их сначала нужно будет записать в какую-то БД. Просто будет лишний шаг &#151; синхронизация.


> [14] Anatoly Podgoretsky ©   (20.02.12 12:13)
> > ...  (20.02.2012 10:10:13)  [13]
>
> Есть и бесплатно

И как узнать эту дату?


 
Anatoly Podgoretsky ©   (2012-02-21 11:36) [21]

Timestamp

Дату узнать нельзя, зато можно узнать какие записи добавились или удалились.

Но дату добавления можно узнать если сделать поле типа datetime с дефолт значением, и изменения если сделать триггер на это поле.

Короче штатных средств достаточно.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.07 c
15-1352372205
Scott Storch
2012-11-08 14:56
2013.03.22
как обозвать action


15-1346775365
pasha_golub
2012-09-04 20:16
2013.03.22
Как привести TList<TField> к простому TList


11-1244189328
igg
2009-06-05 12:08
2013.03.22
Подмена главного меню


15-1354134606
Юрий
2012-11-29 00:30
2013.03.22
С днем рождения ! 29 ноября 2012 четверг


15-1335792488
Knight
2012-04-30 17:28
2013.03.22
Триггер в FireBird





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский