Форум: "Прочее";
Текущий архив: 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 поле, которое будет нужно только для того, чтобы сделать потом «select top(1) <поле> order by id desc».
> Страх-то какой.
Не страшно (хотя все зависит от БД, но в данном случае это MS SQL SERVER, а для него это мелочи). Но не вижу смысла. Тем более что сервер очень медленный (или загружен, или слабый, или Ксперский инсайт — админы сервера не сообщают).
← →
Омлет © (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]> а потом вдруг понадобится
Эти данные нужны только для моего алгоритма. До того, как они мне потребовались, они были не нужны. Для них даже предложили использовать какую-нибудь другую БД, чтобы не портить «красоту», настолько они не нужны :)
> Что это за rfc и среда разработки?
SAP. RFC — это вызов удаленной функции, в данном случае SAP <-> SAP.
> Что в критике говорилось?
Одна таблица из 1 поля и 1 строки — это плохо, не по правилам, нужно перенести в другую БД, которая у меня есть на этом сервере для другой программы.
← →
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)
Спасибо. В общем — именно так и предполагал. Но было интересно знать — нет ли действительно каких-то минусов и сложностей с использованием лишней таблицы. Т.к. слишком остро была встречена попытка ее добавления.
← →
... (2012-02-20 10:10) [13]> [11] Anatoly Podgoretsky © (20.02.12 10:04)
У MS SQL ведь нет информации о последнем изменении таблиц (без каких-то специальных настроек — такое точно не разрешат)? Есть только «refdate datetime Reserved for future use». Или все же что-то есть?
← →
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 нет стандартной синхронизации баз?
Не знаю. Но в данном случае данные сперва обрабатываются, поэтому все равно их сначала нужно будет записать в какую-то БД. Просто будет лишний шаг — синхронизация.
> [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.075 c