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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Style   (2003-03-12 10:53) [0]

Уже в течении полугода пишу программу ядерной безопасности. Программа принемает данные с определенной платы и записывает их в базу данных. Я выбрал Paradox. После многих неудачных опытов и попыток сменить базц на другой формат я всеже вернулся к Paradoxу.
Вообще вся база данных должна содержать седующую информацию

Дата и Время - (DateTime)
Концентрация U235_1 - (Float 20 знаков после запятой)
Концентрация U235_2 - (Float 20 знаков после запятой)
Концентрация U235_3 - (Float 20 знаков после запятой)
Концентрация U235_4 - (Float 20 знаков после запятой)
Oшибка 1 - (SmallInt)
Oшибка 2 - (SmallInt)
Oшибка 3 - (SmallInt)
Oшибка 4 - (SmallInt)
И еще четыре поля содержащие Memo данные

1. Моя неудачная попытка - использование Мемо полей.
База стала рости до немеренных размеров по непонятным причинам.
Пробывал разные форматы баз. Все попытки оказались неудачными.
т.к. из базы нужно удалять информацию на совсем!

Я поступил следующим образом: Оставил формат Paradox, А поля Мемо заменил на таблицу -> memos.db а в своей главной базе стал хронить указатили на ID в таблице с мемополями...

Самое страшное что в таблице memos. должны храниться тоже Doubleвские значения т.е. 20 знаков после запятой. т.е. Каждая запись в Base.db Должна хранить в себе 1024 Double значений из memos.db
Структуру memos.db я сделал следующую ID, I1,i2,i3,i4....i254 т.е у меня уместилось только 254 поля с данными.
4 строчки в этой таблице приндлежат 1 строчке в таблице base.db!

+ В программе существуют еще 2 таблицы const.db и const2.db в которых уже хранится около 400 констант программы. Для каждой записи Base.DB!

Так вот появилась следующая проблемма вся эта информация если я использовал QUERY! (так называемый SQL) начитывалась минимум секунд 40!Если использовать Locate то такая же картина.Причем объем memos.DB это 40000 строк по 256 Dooble полей..

Поэтому я отказался от SQL!

Стал использовать TTable и метод MoveBy..

Причем Если курсор находился примеру ближе к началу базы я сначала делал BOF а потом MoveBy дабы ускорить доступ к информации информации в memos.db

На Celerone 600
Получилась следующая картина: Начитка всей инфы если я перемещаюсь из начала в конец занимает меньше секунды, но если я перемещаю курсор в середину минимум секунд 16! Но только первая начитка т.е если я опять перемещаю курсор где нибудь по близости данные загружаются моментом!

Так вот в чем вопрос.. Мою программу юзают и более слабые Компы.. Как бы сделать быстрее.. Есть ли более оптимальное решение моей проблеммы????

P.S. простите меня за мою грамматику :)


 
Sheriff   (2003-03-12 10:56) [1]

мда... начало многообещающее...


 
Dred2k   (2003-03-12 11:16) [2]

"Нииииччччего не понимаю" (c) коллега
К сожалению, суть задачи улавливается с трудом.
Одно могу сказать точно - мемо поля парадокс хранит, скажем, не совсем оптимально. ;) Объем файлов действительно неадекватен объему хранимой инфы. Ну да ладно...
Диагноз - непроработанная структура таблиц.


> Дата и Время - (DateTime)
> Концентрация U235_1 - (Float 20 знаков после запятой)
> Концентрация U235_2 - (Float 20 знаков после запятой)
> Концентрация U235_3 - (Float 20 знаков после запятой)
> Концентрация U235_4 - (Float 20 знаков после запятой)
> Oшибка 1 - (SmallInt)
> Oшибка 2 - (SmallInt)
> Oшибка 3 - (SmallInt)
> Oшибка 4 - (SmallInt)
> И еще четыре поля содержащие Memo данные


Как я понял из вышенаписанного, таблица вообще одна - каждая запись является "неким состоянием некой системы" на момент времени. Ну и все. В чем проблема? Если искать хочешь по полям "И еще четыре поля содержащие Memo данные" - от мемо придется отказаться. Или только перебором.


> (так называемый SQL)

Самый обычный и полезный SQL. Не обижай его! ;))


 
Соловьев   (2003-03-12 11:18) [3]

Парадокс для ядерной безопасности.... а потом Чернобыль. :((((


 
Style   (2003-03-12 11:28) [4]

>> Dred2K
Вся проблемма заключается в быстроте доступа к данной информации.
А тратить время на базу данных мне не охота. Так как там и помимо того очень много математических расчетов и прочей ядерной лабуды.

>>каждая запись является "неким состоянием некой системы" на момент времени
да именно так. вообще в base.db должно максимум храниться 10000 точек. + 4 канала содержащии по 256 точек типа Double! + около 400 констант типа Double!

Меня волнует время получения этой информации и не более.

>>Самый обычный и полезный SQL. Не обижай его! ;))
Да ты прав самый обчный.. Как есть. т.е упрощенный (урезанный) до невозможности. :))


 
Style   (2003-03-12 11:29) [5]

>> Соловьев..

Да.. будем винить в этом Borland :))


 
Sergey13   (2003-03-12 11:49) [6]

2Style (12.03.03 10:53)
>Уже в течении полугода пишу программу ядерной безопасности
Ты меня извини, но ты пишешь рабочую систему или диплом/курсовик? Если первое то пора отсюда (из России) мотать. Хотя от этого уже не убежишь. 8-(
Если по ядерной безопасности проги пишет человек спрашивающий советов в форуме и использует для этого парадокс... Ну все, край... Это же ядерная угроза!!! 8-) или правильнее 8-(


 
Dred2k   (2003-03-12 11:49) [7]

> Вся проблемма заключается в быстроте доступа к данной
> информации. А тратить время на базу данных мне не охота.
Два взаимоисключающих желания. Поверь мне, забьешь на базу - хлебнешь с лихвой. Не будет радости потом расчеты делать...
> Так как там и помимо того очень много математических расчетов
> и прочей ядерной лабуды.
В идеале, конечно, вас должно быть двое...
Коль ты базы не любишь. ;)

> >каждая запись является "неким состоянием некой системы" на
> >момент времени
> да именно так. вообще в base.db должно максимум храниться
> 10000 точек. + 4 канала содержащии по 256 точек типа Double!
> + около 400 констант типа Double!
Ладно, давай от твоих терминов и толкнемся.
Точка - сущность. Все остальное - атрибуты. Для порядка - суррогатный ключ типа Integer. Вот и вернулись мы к одной таблице. С твоими любимыми блобами (ну или мемо). :)
Искать по каналам и константам ты не сможешь. Да и не нужно, как я понимаю. Возьмешь по периоду времени группу записей, пойдешь по ним и сделашь расчет (тут ты и мемо вынешь, и что угодно - и обработаешь). Вот и все.
> Меня волнует время получения этой информации и не более.
Пройтись даже по всем 10 штукам долго не займет.
И по сотне тоже. Расчет дольше будет ;)

>>Самый обычный и полезный SQL. Не обижай его! ;))
>Да ты прав самый обчный..
>Как есть. т.е упрощенный (урезанный) до невозможности. :))
Ну, в предыдущих вресиях BDE он еще хуже был... ;)
Зато локальный. А прикинь, как без него тяжко было бы. Оракл - муть ведь жуткая! ;)))



 
Style   (2003-03-12 11:51) [8]

Sergey13>> Скажем так это для Докторской десертации отдного человека :)


 
Dred2k   (2003-03-12 11:55) [9]


> Sergey13>> Скажем так это для Докторской десертации отдного
> человека :)

Блин, а я то уж думал - в интересах стратегической безопасности нашей Родины тут кумекаю....
Какой облом!!! ;)))


 
Style   (2003-03-12 12:10) [10]

Dred2k © >>
Наверное я немного не правильно описал свой жуткий вопрос?

От мемо полей я уже давно отказался..
Т.к. приходится делать из базы Delete и причем такой Delete Что бы совсем все данные пропадали в никуда.. А вот с Мемо полями это невозможно ;)

Дальше.. Представь такую картину.

Base.DB: (Максимум 10000 строк Далее удоляеться самая верхняя)
Date,ID, Dbl1, Dbl2, Dbl3, Dbl4, Int1,Int2,Int3,Int4;

Const.DB:
ID(из Base.DB), Dbl1....Dbl254

Const2.DB:
ID(из Base.DB), Dbl1....Dbl254

Memos.DB:
ID
(из Base.DB), Dbl1....Dbl254 (4 строчки для каждой записи в base.db)


т.е. Чтобы начитать информацию мне нужно..

Select * from Const where ID = :ID (ID из base.db)

var
Str: TStringList;

Str := TStringList.Create;

For i:= 1 to ConstQuery.FieldCount-1 do
begin
Str.Add(ConstQuery.Fields[i]
end;


Select * from Const2 where ID = :ID (ID из base.db)
Также начитываем

Select * from Memos where ID = :ID (ID из base.db)

Зачитывем в 4ре StringList-а Для 4 записей


Так Вот если я использую SQL это происходит секунд 40-50
Пришлось юзать MoveBy!


 
Style   (2003-03-12 12:12) [11]

Dred2k >> Да это ж я чтоб народ не пужался :)))
А потом кто его знает куды программа пойдет


 
Anatoly Podgoretsky   (2003-03-12 12:18) [12]

Ядерная безопасность и Парадокс не совместимы


 
Sheriff   (2003-03-12 12:26) [13]

...потому Парадоксом и называется... :)


 
Style   (2003-03-12 12:34) [14]

>> Anatoly Podgoretsky
Спорим совместимы: Программа отлично работает .. Тестируется на нескольких заводах. Я обезопасил все эти глюки сделал и реиндексацию в базе и т.д..
Меня волнует только скорость с таким количеством Double значений.


 
DarkGreen   (2003-03-12 12:35) [15]

2 Style (12.03.03 12:12)
Надеюсь ты не с Семипалатинска....
А то мы тут недалече... ;-))
Звиняюсь за оффтоп


 
Соловьев   (2003-03-12 12:38) [16]

Тут рядом идет обсуждение о крахе Парадокса раз в месяц... О какой безопасности и тем более ядерной можно говорить? Парадокс это настольная БД для хранения картотетки о домашних аудиозаписях. Конечно утрирую, но все-таки. Неужели компания занимающаяся ядерной безопасностью не может раскошелится на лицензионный Oracle, DB2 или хотя бы Interbase, Sybase, MS SQL?


 
Style   (2003-03-12 12:46) [17]

Плюс .. сама ядерная безопасность обеспечивается клиентской частью программы т.е. вне базы данных. База данных нужна только для хранения информации и анализа изменения концентрации U235.

Но иногда эту инфу нужно достать оперативно. Если учесть то что в базу она записываеться каждые 10-15 сек.


 
Anatoly Podgoretsky   (2003-03-12 12:53) [18]

Style (12.03.03 12:34)
Во первых признайся в каких городах ты обезопасил нам, некоторые смогут вздохнуть с облегчением.


 
Соловьев   (2003-03-12 12:53) [19]

2 Style (12.03.03 12:46)
Ты хоть не в Украине находишся? Где только дают заказы на разработку ПО для ядерных исследований? Там наверное деньги отмыть хотят. Все и так работает на ЕС-ках.


 
Sheriff   (2003-03-12 12:57) [20]

за безопасность должна отвечать только аппаратная часть, да еще с не менее чем 3-мя уромнями независимого дублирования!
иначе, какое к черту быстродействие!?
а программа - лишь для логов, да для перевода данных в доступный для юзера вид.


 
Dred2k   (2003-03-12 12:58) [21]


> Dred2k >> Да это ж я чтоб народ не пужался :)))
> А потом кто его знает куды программа пойдет

Мда... Опасения за безопасность моей любимой Родины снова усиливаются...
Ты пойми - парадокс в этом плане тебе не подойдет, раз уж все так запущено. Пароли ставить не пытайся - инженерку jIGGAe еще никто не отменял. Ну и многое что можно сказать, да ладно...

> Наверное я немного не правильно описал
Ну как получилось...
> свой жуткий вопрос?
Эээтт точно (c) т. Сухов
С этим уж проблем нет...

> От мемо полей я уже давно отказался..
> Т.к. приходится делать из базы Delete и причем такой Delete
> Что бы совсем все данные пропадали в никуда.. А вот с Мемо
> полями это невозможно ;)
А спорим - возможно! (блин, как все запущено...)

procedure PackTable(Table: TTable);
{ This routine copied and modified from demo unit TableEnh.pas
from Borland Int. }
var
{ FCurProp holds information about the structure of the table }
FCurProp: CurProps;
{ Specific information about the table structure, indexes, etc. }
TblDesc: CRTblDesc;
{ Uses as a handle to the database }
hDb: hDbiDB;
{ Path to the currently opened table }
TablePath: array[0..dbiMaxPathLen] of Char;
Exclusive: Boolean;
begin
if not Table.Active then raise EDatabaseError.Create(SDataSetClosed);
Check(DbiGetCursorProps(Table.Handle, FCurProp));
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
{ Call DbiDoRestructure procedure if PARADOX table }
hDb := nil;
{ Initialize the table descriptor }
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
{ Place the table name in descriptor }
StrPCopy(szTblName, Table.TableName);
{ Place the table type in descriptor }
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
{ Get the current table"s directory. This is why the table MUST be
opened until now }
Check(DbiGetDirectory(Table.DBHandle, False, TablePath));
{ Close the table }
Table.Close;
try
{ NOW: since the DbiDoRestructure call needs a valid DB handle BUT the
table cannot be opened, call DbiOpenDatabase to get a valid handle.
Setting TTable.Active = False does not give you a valid handle }
Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb));
{ Set the table"s directory to the old directory }
Check(DbiSetDirectory(hDb, TablePath));
{ Pack the PARADOX table }
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
{ Close the temporary database handle }
Check(DbiCloseDatabase(hDb));
finally
{ Re-Open the table }
Table.Open;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
{ Call DbiPackTable procedure if dBase table }
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True));
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else DbiError(DBIERR_WRONGDRVTYPE);
end;

Используешь так:

Что-то делаешь весь день с данными...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
Удаляешь...
ОБА! А секретность!? -[]
И тогда:
Table.DisableControls;
try
Table.Open;
PackTable(Table);
finally
Table.EnableControls;
end;

Не забудь uses BDE, DBConsts.
Компили, дело верное. И будет тебе счастье.
Видишь, как просто открываются по-новой ранее упущенные клевые возможности. ;)

> Дальше.. Представь такую картину.
Да представил, представил...
Тебе один путь - вернуть мемо и не извращаться.
Писать его будешь как FieldByName("SuperMemo").AsString := строка с числами (лучше хранить через интежер, приводи Double к TDateTime - это и так одно и то же, потом изучи как работает
DateTimeToTimeStamp и TimeStampToDateTime). Точность абсолютная, а хранить просто (учитывая список значений ...).
Читать так же.

> Так Вот если я использую SQL это происходит секунд 40-50
Конечно. На каждую запись ты запрос мочишь! Ключи хоть есть по ID? Master-Detail, батенька! И только он для такой системы.
> Пришлось юзать MoveBy!
Это что это за MoveBy?! Ты что, заклыдваешься на прямое соответствие расположения записей в главной и подчиненных таблицах? Блин, трудный случай.


 
Style   (2003-03-12 13:16) [22]

Dred2k>>
Как же думаешь сколько времени займет PackTable

Ты что, заклыдваешься на прямое соответствие расположения записей в главной и подчиненных таблицах? Блин, трудный случай.
->> Именно прямое расположение другое и не нужно.. Представь что это просто некий Кэш.. в котором накапливается 10000 точек и в момент добавления 10001 10000 удаляется...


 
Style   (2003-03-12 13:17) [23]

>> т.е не 10000 а 1 я запись удаляется


 
Style   (2003-03-12 13:23) [24]

Народ и пожалуйста не оспаривайте мое "оптимальное решение"... Наоборот посоветуйте как мне сделать лучше и какую БД использовать в данной ситуации..
И так чтобы все это происходило быстро!


 
Соловьев   (2003-03-12 13:24) [25]

ИМНО, спецБД - написанную серьезной канторой, которые не новички в ядерной безопасноти...


 
Style   (2003-03-12 13:26) [26]

Sheriff -> Сам прибор это новый революционный подход в ядерной безопасности поэтому раскрывать его технологию я не вправе. А то что в аппаратной части есть свои блоки безопасности это естественно. Но изменение концентрации высчитывает сама программа Зате возвращает данные в прибор.. И уж только потом записывает их в базу..


 
Style   (2003-03-12 14:01) [27]

>>Anatoly Podgoretsky
Новосибирск, Омск, Электросталь :)) Страшно...


 
Soft   (2003-03-12 14:02) [28]

Изверг.

Ты хоть не под 95-ткой её ставишь?

А если программа неправильные данные в прибор вернет и что тогда... Скоро эхом грянет Cтрашный Русский ренесанс:(

По своему опыту не рекомендую использовать досявые базы. Выбрал когда-то DBISAM так два месяца работы просто так нафик пропали. Теперь использую Access, вроде не глючит. Программа тоже оборонного значения(для Украины).

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


 
Dred2k   (2003-03-12 14:12) [29]

>Как же думаешь сколько времени займет PackTable
Думаю, ты и не заметишь. Конечно, если не собираешься заниматься абсолютно бесполезной упаковкой при каждом удалении записи.
А вот заметишь ты, причем очень быстро, насколько труден и фатален сизифов труд. Это когда тебе пару десятков констант придется добавить или точек штук пять, в крайнем случае... Тут-то ты о мемо и вспомнишь. ;)
(блин, а ведь зря звезды героя не дают за такие подвиги - сотни полей, надеюсь, автоматом создаешь или же все таки ... о, Боже!).
;))

> Именно прямое расположение другое и не нужно.. Представь что
> это просто некий Кэш.. в котором накапливается 10000 точек и > в момент добавления 10001 10000 удаляется...
"Толково придумано." (c) МВИН
Это фифошка, блин, какая-то получается. Сразу обсчитывать вносимую запись и сублимировать в результат не пробовал. На лету?
Зачем иметь только 10000, но последних? Только последних, но 10000?
;)

>Народ и пожалуйста не оспаривайте мое "оптимальное решение"... >Наоборот посоветуйте как мне сделать лучше
Да вот пытался.
>и какую БД использовать в данной ситуации..
>И так чтобы все это происходило быстро!
Мдаа.... Все ясно.
Мой фюрер, предлагаю поправить треуголку и учить матчасть.
;))

>ИМНО, спецБД - написанную серьезной канторой, которые не >новички в ядерной безопасноти...
Я за. И даже без ИМНО...
Думаю, если дисер свет увидет - на парадокс положат и вообще.
Все там по-другому будет и другими...


 
Sheriff   (2003-03-12 14:16) [30]

При таких исходных данных ничего путевого посоветовать нельзя.
А вообще задача разбивается минимум на 3 подзадачи:
- организация данных в БД
- занесение данных в БД
- выборка данных их БД

все это с соблюдением требований:
- надежность
- достоверность
- быстродействие

изходя из этих требований начинаем искать подходящую БД,
продумываем организацию данных (весьма немаловажно!),
и уж потом забиваем БД всякой белибердой и экспериментируем
на этих данных, оптимизируя быстродействие.
а по вопросу выборки вообще ничего конкретного сказано не было.
это все ИМХО...


 
Style   (2003-03-12 14:32) [31]

Soft>> Пробывал я на Access переводить. через ADO но база ACCESS тоже стала рости. Delete не всегда удолял на проч запись и в итоге база набирала 1Гб и вставала..

Dred2k © >> Я же писал что Мемо поля работали все было хорошо..
И удалялась инфа из БД вроде бы тоже. Но по абсолютно непонятным причинам База вставала раком.. т.е файлик набирал 2GB. Поэтому я начал извращатся.

Так вот в одних форматах не удалялась инфа вовсе.
В других скорость не устраивала.

Вернулся в парадокс и стал работать напрямую с Table..


 
Style   (2003-03-12 14:40) [32]

Dred2K->>
Зачем иметь только 10000, но последних? Только последних, но 10000?
===
Так хотят заказчики. Именно 10000 точек.. Так именно зарегистрирован прибор. Да и еще со старой программой которая вообще была написана на VisualBasic как раз в Украине не мной :)


 
Soft   (2003-03-12 14:42) [33]

Style>> Пробывал я на Access переводить. через ADO но база ACCESS тоже стала рости. Delete не всегда удолял на проч запись и в итоге база набирала 1Гб и вставала..

Сейчас я на работе, не поленись прислать мне на домашний адресс alife-soft@yandex.ru письмо с напоминанием, я тебе вышлю программный код сжатия базы Acess. А Delete не удаляет записи оно их только отмечает к удалению. Таковы уж заморочки и с Access.

А хочешь совсем просто быстро и стабильно - ставь Oracle Lite, PII-350 256M ОЗУ и полный кайф. Будет летать при любой(даже самой идиотской) конфигурации базы(и пользователей) :)


 
Style   (2003-03-12 14:45) [34]

Dred2K>>
Сейчас заполненная базад данных занимает 192 мега. т.е. сумма всех 4-х файлов.. Самый большой -> Memos.db

Sheriff>> А как мне надо было поступить если не Парадокс то что???
Тем более меня торопил заказчик.. Очень сильно торопил.


 
Style   (2003-03-12 14:48) [35]

Soft >> Представь что программа должна работать непрерывно занося каждые 10 а то и 5 сек данные в Базу (таки громоздые FLoatы), а ACCESS вообще удальть не умеет как ты говоришь.. Поэтому я и отказался от него сразу..

ALL
-->> Кстати с этими опытами постоянной записи в винт и удаления я протер на Винте( Barracuda Seagate 60GB) себе Дырку :)) После чего решил поменять его на новый.. Поэтому с этой прогой наверняка надо еще и менять аппартку к примеру на SCSI


 
Sheriff   (2003-03-12 14:57) [36]

о! уже 5 сек...
а нужно ли постоянно записывать данные в БД, если с ними никто не работает?
или за 5 сек пользователь успеет сделать выборку и принять решение?


 
Sheriff   (2003-03-12 14:58) [37]

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


 
Style   (2003-03-12 15:06) [38]

Sheriff-> Можно и 1 сек.. Можно и меньше секунды.. Я так сделал.. Только Программа Сначала дает считать данные а потом их продолжает записывать в отдельной нити..
Это время измерения для прибора - настройка пользователя.


 
Style   (2003-03-12 15:10) [39]

>>>кстати, вовсе не обязательно вставлять новую запись и удалять ненужную... достаточно вставлять новые данные на место ненужных.

Я думал об этом но так можно конкретно повесить базу. т.е надо постоянно следить за тем ID который надо затирать. (некоторое неудобство), так вот Есть же возможность удалять их Парадокса поэтому я подумал почему бы и нет!


 
Style   (2003-03-12 15:11) [40]

Так все же. Парадокс или Что???


 
Sheriff   (2003-03-12 15:21) [41]

затирать надо всегда следующий ID,
если достигли eof - идем на 1-ю запись.
очень просто... помним ID лишь для идентификации
последней заполненной записи, хотя это можно определить и по дате.

и опять же не понятно зачем все эти данные?
-для последующего анализа их разработчиком прибора?
-...?


 
Delirium   (2003-03-12 15:23) [42]

Думаю, лучший выход - MSDE2000, это бесплатная версия MSSQL2000, найти её можно например в дистрибутиве Office XP. Встаёт на любую операционку от Microsoft, многократно легче Oracle. Для твоей задачи и фукциональность и производительность - избыточна.


 
Dred2k   (2003-03-12 15:32) [43]

> Я же писал что Мемо поля работали все было хорошо..
Блин, я ж фигни не посоветую. ;))
> И удалялась инфа из БД вроде бы тоже.
> Но по абсолютно непонятным причинам База вставала раком..
> т.е файлик набирал 2GB.
Слушай, такого смайлика я фиг найду. Даже не знаю, как описать свои эмоции, вызванные прочтением этих незатейливых строчек. Все бы хорошо, но вот что-то меня настораживает... Может быть то, что пишет их не обдолбившийся пивком студент-философ, а разработчик некоего программного модуля системы обеспечения ядерной безопасности?....... Нет? Я не прав?
ТЫ НЕ ИМЕЕШЬ ПРАВА НА СЛОВА "вроде бы тоже" !!!
;))
А насчет твоего секретного ноу-хау удаления записей просто сообщу, что ни парадокс, ни акцесс, ни многие другие DBISAM-платформы, да и серверные системы в принципе тоже - НИКТО ИЗ НИХ НЕ УДАЛЯЕТ ЗАПИСЬ ФИЗИЧЕСКИ. Еще наши далекие славные предки придумали флаги, маркеры и прочую веселую фигню. Запись лишь помечается как удаленная и никуда!, никуда не девается! Пойми - она десятая, за ней еще сто тыщ. Ты ее удаляешь физически - значит полностью перестраиваешь файл с этого места и до конца.
Это полный мрак - конец науке. Поэтому никто так не делает.
А безопасность на некоем сервере, где ваыполняется модуль, никакими программными средствами, тем более с таким деструктивным антинаучным подходом, ты не обеспечишь. Безопасность таких систем обеспечивается на уровне даже не ящиков компутеров, и даже не комнат. А целых зданий и специальных райнов. Вот так-то... Так что прими как данность - твою базу охраняет не только винда и доктор веб ;) (шутка), но еще какая-нибудь 11424330-я отдельная мотострелковая бригада и рота особистов. Если требования по программной безопасности все же есть (думаю, что да) - то в любом случае такими амебными (читай простейшими) мерами ее не обеспечить.
> Поэтому я начал извращатся.
Чем извращаться, лучше подучиться. И без обид.


 
Style   (2003-03-12 15:54) [44]

Dred2k © >>
Извените меня сир..
Но если после метода Delete Файл не меняет размеры..(Причем это происходит многократно т.е Неделями работает программа..) А размер файла DB остается прежним... То что же тогда происходит с базой.. Пользуясь только двумя процедурами Append и Delete.!!!

ЧТо ПрОисходит!

Как это делает Парадокс я не знаю, но он это делает и Очень-очень быстро!


ТЫ НЕ ИМЕЕШЬ ПРАВА НА СЛОВА "вроде бы тоже" !!! >>

Если я вижу что запись удалена (отмечена как удаленная) размер файла не меняется иииии. Потом вдруг :)) файл начинает рости до 2GB!!! --> по этому я и говорю "вроде бы тоже"


 
Delirium   (2003-03-12 16:00) [45]

> ЧТо ПрОисходит!

А ты подумай, открой в HEX-редакторе любой примитивный формат, тот-же DB и посмтори как физически хрянятся записи, по аналзируй...


 
Style   (2003-03-12 16:01) [46]

Dred2k © >>

Если эти приборы покупали и покупают.. И они работают.. (Есть и тревога и много другое)... То почему ты мне рассказываешь как это должно быть обеспеченно вне компутера..
НО! Что касается баз Данных мне толком никто ничего и не посоветовал.. (кроме Sheriffa)

Да а может быть такое что на место удаленной Paradox автоматом вставляет новую запись если это Append?? Почему бы и нет...


 
Polevi   (2003-03-12 16:02) [47]

я надеюсь ты в питер не собираешься переезжать ?


 
Style   (2003-03-12 16:04) [48]

Polevi © :) С радостью...

Я конечно понимаю что тема очень серьездная.. Ну вы вместо того чтобы меня упрекать.. Подумали бы в действительности! И как лучше быть в данной ситуации...

Отчего PARADOX себя так ведет.???


 
Delirium   (2003-03-12 16:08) [49]

Если уж говорить о Paradox - у тебя индексы-то есть?


 
Style   (2003-03-12 16:11) [50]

>>Если уж говорить о Paradox - у тебя индексы-то есть?

Я пробывал заводить индексы.. Select проходит конечно быстрее.. Но как мне их Обновлять причем постоянно???


 
Style   (2003-03-12 16:12) [51]

DROP INDEX
CREATE INDEX -> Это тоже время


 
Dred2k   (2003-03-12 16:15) [52]

>Если эти приборы покупали и покупают.. И они работают.. (Есть и
>тревога и много другое)... То почему ты мне рассказываешь как
>это должно быть обеспеченно вне компутера..
Да что я тебе могу рассказать про это?...
А если бы и мог - не рассказал бы ;)
>НО! Что касается баз Данных мне толком никто ничего и не
>посоветовал.. (кроме Sheriffa)
Да ладно врать-то! ;))
Уж сколько лет твердили миру, что парадокс и мемо - руль! ;)
Совет прост:
- если сдаешь систему - оставь парадокс, верни мемо, забей на безопасность "на лету" и попей сегодня вечером пивка (я виртуально тебя поддержу) ;)
- если время есть (с пол-годика примерно) ставь легкий оракел и я буду тебе только завидовать (вынужден работать с парадоксом, хотя и скучаю). ;( ;)
Для диссера сих мероприятий вполне хватит. Только знай, что настроить ворованный оракел _у заказчика_ еще сложнее, чем приручить несколько глючное и такое же ворованное BDE...

>Да а может быть такое что на место удаленной Paradox автоматом
>вставляет новую запись если это Append?? Почему бы и нет...
Так и есть, на самом деле. Только что проверил. Причем даже без первичного ключа пашет.



 
Style   (2003-03-12 16:15) [53]

И что бы народ не пугался.. :)

Пока это прибор для анализа поведения U235 и изменнения его Концентрации.. т.е. он сделан в Мирных целях только для изучения..

Но он вполне работает как и система безопасности...


 
Style   (2003-03-12 16:17) [54]

Dred2k >> Но с Мемо Полями Автозамена не проходит...:((

Да и на счет Пива.. Style@NMK.ru высылай :))


 
Sheriff   (2003-03-12 16:18) [55]

мда... а сути мы так и не услышали...
ковыряться надо не в Парадоксе, а в Вашей проблеме...
и приемлемое (не обязательно самое простое) решение наверняка не в Delete и Append.


 
Anatoly Podgoretsky   (2003-03-12 16:29) [56]

Style (12.03.03 14:01)
Слава богу


 
Dred2k   (2003-03-12 16:38) [57]

> Но с Мемо Полями Автозамена не проходит...:((
Враки, все проходит. Я с ними и пробовал, я хитрый ;)
Видишь, как бывает. Хоть и нет такого понятия, как эта самая "автозамена", она все равно проходит...
;)))
> Да и на счет Пива.. Style@NMK.ru высылай :))
Что ж, кратко и вероломно. ;)

Sheriff (12.03.03 16:18)
>мда... а сути мы так и не услышали...
>ковыряться надо не в Парадоксе, а в Вашей проблеме...
>и приемлемое (не обязательно самое простое) решение наверняка
>не в Delete и Append.
Золотые слова. "Зри в корень" - по-любому. Просто есть предположение, что сегодня, во всяком случае, ничего более эффективного здесь не пройдет - человеку надо все осмыслить, взглянув со стороны на плоды трудов своих. При желании, разумеется... Иначе - вилы.



 
Style   (2003-03-12 16:43) [58]

Интересно следующие, Что сейчас тормозит мою прогу..

Может ли быть такое что когда я делаю Seek файлу 192 мег. на это уходит 10 а то и более Секунд???

Если я стою на 0 и делаю
так вот MoveBy(5000)...
Программа думает.. и очень даже долго.. ПОЧЕМУ???


 
Style   (2003-03-12 16:47) [59]

>>>Враки, все проходит. Я с ними и пробовал, я хитрый ;)
Видишь, как бывает. Хоть и нет такого понятия, как эта самая "автозамена", она все равно проходит...

Она проходит если размеры каждой записи одинаковые.. Так вот в Мемо-полях они разные и иногда..в Моем понимании Paradox начинает только вставлять строки и после того как файл набирает 2GB - все встает! :)


 
Anatoly Podgoretsky   (2003-03-12 16:49) [60]

Style (12.03.03 16:43)
Даже простое последовательное чтение 192/10 = 19 мб/сек


 
Dred2k   (2003-03-12 16:53) [61]

Style (12.03.03 16:43)
> Интересно следующие, Что сейчас тормозит мою прогу..
[...]
Думаю, что вопрос этот неразрешим, как и любой другой полностью абстрактый. Пойми - финальный рецепт ты здесь не получишь, если только по деталям каким-то.
А с прогой твоей разобраться будет сложно даже при желании - и это вполне объективно. Факторы, обуславливающие пресловутые "тормоза", могут быть самые разные и неожиданные. Исходники ты не пришлешь, а простыми словами описать программу не получится (и в принципе, и в твоем случае в частности - что не отнять, так это достаточно сумбурное изложение деталей, уже пол-дня несколько человек тебя фактически пытают, а ты не колешься по делу). ;)
Если только взять и написать тебе движок ;)
Шучу.
Все получится, только время нужно и въедлевость по каждому вопросу. Мелочей нет.


 
Desdechado   (2003-03-12 16:57) [62]

Если тебя так мучают мемо-поля, то, при условии, что в них хранится структурированная информация и помещена она в мемо только из-за невозможности создать более 254 полей в таблице, я бы поступил так:
1. создал бы несколько таблиц, в каждую затолкал бы близкие по смыслу характеристики (до 254)
2. избавился бы от мемо за счет п.1
3. ничего страшного, что таблицы связаны между собой 1:1. Это даже полезно, когда надо вычитывать не все данные, а только например из 2 таблиц (когда их 7, например)
4. если число записей всегда фиксированно (10000), заточи прогу так, чтобы (как резонно заметил Sheriff) не удалять ненужные строки, а записывать данные поверх старых. Т.е. пишу в текущую строку, потом в следующую и т.д. до EOF, перехожу на первую и т.д. Размер БД меняться не будет. Упаковка не требуется.
5. а индексы все-таки иногда полезны :)
6. иногда дроби <1 удобнее хранить как целые

Ну, и по СУБД - все-таки SQL-сервер, оно надежнее.
НО: у Oracle, например, в лицензии четко сказано, что нельзя использовать на ядерных, химических и бактериологических производствах.


 
Style   (2003-03-12 16:59) [63]

>>Даже простое последовательное чтение 192/10 = 19 мб/сек

Я не считываю данные я хочу сделать Seek.. Может я немного не понял тогда если можно подробнее :)


>>Все получится, только время нужно и въедлевость по каждому вопросу. Мелочей нет.
Хорошо завтра я принесу исходничек.. :) Сам исходник сюда не влезет :) Ну то что касается базы данных.. Может все таки найдем "Оптимальное - Решение"..


Спасибо всем.. До завтра :)


 
Style   (2003-03-12 17:00) [64]

6. иногда дроби <1 удобнее хранить как целые
>> Необязательно что они меньше единицы.. Может быть и такое 99999,9999999 :))


 
Dred2k   (2003-03-12 17:09) [65]

>Она проходит если размеры каждой записи одинаковые.. Так вот в
>Мемо-полях они разные и иногда..в Моем понимании Paradox
>начинает только вставлять строки и после того как файл набирает
>2GB - все встает! :)

Ну, попробуй сам. Все нормально. Сразу скажу:
- в Table1 - таблица с полем Autoinc, много чего еще и Job_Report типа Memo (есть еще memo, но это неважно).
- BDE 5.2.0.2 (из поставки шестерки)
- Paradox level 7
- block size 32 кила

var i, j : Integer;
tmp : String;
begin
Randomize;
Table1.Open;
for i := 1 to 1000 do begin
with Table1 do begin
First;
Delete;
Append;
SetLength(tmp, Random(500) + 300);
for j := 1 to Length(tmp) do
tmp[j] := Chr(Random(256));
FieldByName("Job_Report").AsString := tmp;
Post;
end;
end;
end;

Работает на ура. Насчет двух гиг - так это ограничения парадокса. Больше он не может на одну таблицу.


 
ЮЮ   (2003-03-13 07:25) [66]

Ну вы, блин, даёте.
Начнём с того, что База Данных - это средство для длительного хранения полезной информации.
Если через 14 часов вся информация обновляется, то на кой вообще использовать БД?
Не лучше ли сделать так:
Прибор, с указанной скорострельностью сбрасывает бинарный файл (типизированный).
Программа подхватывает его, обрабатывает, записывает в своё типизованный файл исходные данные и результаты, сбрасывает файл с указаниями прибору, удаляет входной файл.
Если один комп не справляется с информацией к обработке можно подключить сколько угодно машин.


 
Sheriff   (2003-03-13 08:21) [67]

2ЮЮ
Прибор скорее всего не знаком с файлами...
Скорее всего он может лишь сбросить что-нибудь
в COM-порт компа... (USB? LAN?!)
А значит сбрасывать, подхватывать, обрабатывать, записывать и т.д. должна именно программа, что соответственно растягивает время и увеличивает вероятность сбоя.


 
KSergey   (2003-03-13 09:42) [68]

Не, ну я фигею, дорогая редакция! И Новосибирск здесь! Все, звиздец... Не избежать нам чего-то недоброго, если такие, уж простите, но в контексте поставленной задачи, лохи пишут БЕЗОПАСНОСТЬ!

Да ты задумайся наконец! Какая нахрен безопасность (самих данных, их секретность, надежность данных, стабильность выборок) можно сделать на офисной технике (и программной начинке того же уровня), за минимальную стабильность работы которых ручаться просто нельзя, да никто и не ручается?! Равно как и точность рассчетов - об этом вообще кто-то задумывался? ("до 20-го знака" - это как же такая точность высчитывается, интересно? подика храним 20 знаков (да хоть 200), а считаем обычным калькулятором? по тону вопроса складывается именно такое впечатление, что даже и с основами вычислительной математики ("всякой лабудой") нет никакого знакомства, а если и было - то "всякой лабудой" не пользуемся).
Нет, это капец полный.

Я понимаю сделать макет для диссертации "Вот, мол, работает, что-то считает (что надо, разумеется считает ;) - вот такая-то крутая идея и т.д." - это понятно. Но для промышленного использования?!!! Да нельзя просто!!!! Добро бы просто интерфейс для пользователя красивый, хотя и тут возможет "нюанс": не точно вывели циферки - пользователь системы (пусть даже и соображающий в теме) принял неверное решение -> Чернобыль-2 (Боже упаси!!!).
Хотя есть подозрение (по географии), что возможно связано с так называемой "безопасностью" хранения ядерных отходов. Ну тогда можно спать спокойно. Дети будут рождаться с 3 руками и 7-ю пальцами, но хоть небольно...

Вот ты подумай. Я бы спросил "Эта, ребяты, я тут ядерный реактор дома соорудил, так в принципе фурычит, но что-то стрелки приборов постоянно ползут в сторону увеличения значений. В принципе фигня, но скоро ведь и шкалы не хватит. Может прибор побольше взять - чтобы надольше хватило? Или может подкрутить чего, маленько подшаманить? Подскажите, кто в курсе".

И что тут отвечать, интересно? Платформу надо брать другую, БД - другую, один человек (да к тому же нифига не смыслящий в теме, во всяком случае в конкретном, обширном, серьезном и критичном ее куске) сделать качественно в принципе не может - ну что тут советовать-то?!!!

Вообще похоже на нездоровую шутку, но боюсь, что все правда... КАРАУЛ!!!! КАПЕЦ!!!!


 
Sergey13   (2003-03-13 09:51) [69]

Ребята, ну чего вы спорите. Подумайте сами :
192 метра постоянно обновляемой инфы (к которой нужен очень быстрый доступ) и "продвинутый шестисотый", но не мерс а селерон 8-(. А памяти на нем сколько - 64? 32? 16? А диск там какой? А у заказчиков/потребителей "программу юзают и более слабые Компы". Ну и чего тут придумаешь, чтоб все летало? Там наверное свопинг идет страшенный. Просто нужна нормальная машина что бы вся база могла поместиться в оперативке. А потом уж думать о структуре БД, какая именно БД и т.п.

Приделкой к запорожцу колес от камаза ничего не достигнешь.
Чудес не бывает.


 
Mike Kouzmine   (2003-03-13 10:06) [70]

ЮЮ © прав. И не о какой ядерной безопасности речи не идет. Все это для красного словца. А речь идет о мониторинге концентрации изотопов урана 235. А ядерная безопасность - это мониторинг плотности потока быстрых нейтронов и температуры (что зависит от первого) реактора. Все это делается аппаратно. А вся эта лабуда нужна для получения степени очередному "профессору". После защиты все пойдет в архив. Так что безразлично, как это все делать.


 
Style   (2003-03-13 11:17) [71]

Sheriff>> Прибор это ISA плата..
Поэтому такая задача по скорости. Все потому что ISA разъемf уже нет а ресурсво компа с ISA возможно будет не достаточно..:)

Mike Kouzmine>> На счет Мониторинга ты прав.. Но вот как все это работает в целях безопасности просто я сказать не могу.. Это идея того самого проффесора.. Которая уже работает несколько лет.. (Еще раз говорю старая программа была написана вообще на Visual Basicе с использованием Access)
P.S. Зная концентрацию U235 мы можем управлять аппаратной частью в целях безопасности.. Если концентрация превышает заданную уставку то Ахтум!

KSergey © >> Вообще-то все это придумано не лохами... Настоящими ядерщиками.. Самое гнилое дело было за софтом... Над этим проэктом работаю не один я.. Есть десятки людей которые тестируют программу. Есть своя лаборатория!

>>И все-таки я придумал как ускорить тот самый MoveBy по базе!


 
Style   (2003-03-13 11:25) [72]

MoveBy... Вы знаете что он делает... Он перебирает записи по одной пока не наткнётся на нужную!.

Лезем глубже.. В Paradoxовских таблицах есть такое понятике как BOOKMARK но в Source все функции мало того что Protected так еще и не описаны.. Borland не хочет давать код???

Так вот я попробовал просто создать свой массив с BookMark"s

При загрузке базы, При вставке новой записи
GetBookMark

При чтении GotoBookMark.. и все.. Скорость работы теперь какая мне и нужна. Все летает шустро!


 
Sheriff   (2003-03-13 11:26) [73]

ISA плата - это не прибор, а интерфейс к прибору...


 
Anatoly Podgoretsky   (2003-03-13 11:33) [74]

Style (13.03.03 11:25)
Borland не хочет давать код???

Чего? Только ленивый не берет.

Mike Kouzmine (13.03.03 10:06)
У профессора должны быть доценты и не фиг по форумам лазить с ерундой и такими знания, да еще и пугать народ "безопасностью"


 
Style   (2003-03-13 11:33) [75]

Sheriff>> Скажем так.. Это прибор 8) Ты даже не представляешь как это красиво сделано..! К нему цепляются Датчики стоимостью в 1000$ каждый..(если ты имееш в веду что датчики это и есть Прибор). Т.е. в принципе самим прибором является компьютер.



 
KSergey   (2003-03-13 11:34) [76]

KSergey © >> Вообще-то все это придумано не лохами... Настоящими ядерщиками.. Самое гнилое дело было за софтом... Над этим проэктом работаю не один я.. Есть десятки людей которые тестируют программу. Есть своя лаборатория!

Если все так серьезно - неужели не нашлось человека, грамотного в вопросах БД?!! Да просто грамотного в ПО и его написании?

> P.S. Зная концентрацию U235 мы можем управлять аппаратной
> частью в целях безопасности.. Если концентрация превышает
> заданную уставку то Ахтум!

База Paradox летит (программный сбой драйвера доступа, сбой(чик) железа, да даже просто влияние радиоактивного излучения на полупроводники (а они ой как к этому чуствительны), перепад сетевого напряжения и т.д. и т.п.) -> накопление перестает регистрироваться -> Ахтум не происходит... И как? Вас не беспокоит такой "нюанс"?!


 
KSergey   (2003-03-13 11:42) [77]

>К нему цепляются Датчики стоимостью в 1000$ каждый..

Во-первых, это смешно. Это примерно как сказать что у космического корабля колесо (или нет, блин, колес у него нет ;) ну пусть шестеренка - всяко есть) - стоит 1000$ - ну и что? Дык там и требования и, соответственно, масштабы цен другие.
Но дежи при этом, если кто-то хочет запихнуть контроль на несколькими датчиками (судя по твоим словам суммарной стоимостью неск. тесяч, если не десятков тысяч инорубрей) в китайский "прибор" стоимостью от силы 500$ - бред, ИДИОТИЗМ, ВРАНЬЕ.
Вот всяком случае я надеюсь, что не все так плохо. Хотя, откровенно говоря, хрен его знает - я вполне могу поверить в этот идиотизм, вокруг его не меньше (требование (совершенно серьезно) в объявлениях о вакансии обурщицы высшего образования - примерно из той же оперы).


 
Sheriff   (2003-03-13 11:45) [78]

2Style
Сочувствую... всем нам...


 
Style   (2003-03-13 11:48) [79]

Anatoly Podgoretsky>> где...?? покажи :)

Вообще уж очень негативно настроен форум... Скорее не помогают а лишь упрекают и цепляются за слова!
Что тут говорить, люди не видели самой работы и из-за того что человек не может нормально объяснить это не значит что у него не достаточно знаний в данной области.. Если я выбрал Paradox - это не значит что я не работал с другими БД.
Да признаюсь.. Мне 21 год. у меня даже нет образования.. :) Зато я прошел Армию и другие трудности жизни и очень хорошо разбираюсь в людях. У меня просто есть талант придумывать не стандартные решения. Я работаю программистом на предприятии. Пишу программы под SQLSERVER. И если я занимаюсь серьезднымыи проэктами я советуюсь с более грамотными людьми в этом ничего плохого нет!
Вот пример моего стиля программирования. Посмотрите если хотите.
www.sands.nm.ru/TGTView.zip
www.sands.nm.ru/NMKExcel.pas

Нельзя судить и упрекать человека не зная его!

P.S. Господа программисты давайте жить дружно и помогать друг-другу!


 
Sergey13   (2003-03-13 11:50) [80]

2Style (13.03.03 11:33)
> К нему цепляются Датчики стоимостью в 1000$ каждый..
И при таких затратах нельзя переделать плату и поставить нормальную тачку(платформу, СУБД, программиста)? Это получается ржавое железное кольцо, но с брюликом.
Вобщем это не вопрос БД, ИМХО. Тут налицо явное несоответствие аппаратного обеспечения и поставленых перед софтом задач.


 
Style   (2003-03-13 11:52) [81]

KSergey © >> Ну не могу я объяснить весь это процесс.. Все гораздо проще чем вы себе можете представить и все работает уже годами.. Ибо нет аналогов в мире нашим приборам.

Есть у Японцев.. Так стоит это таких денег и выглядит устрашающе..


 
Style   (2003-03-13 11:53) [82]

Sergey13 © >> Опять же плата ISA!! И компьютер с платой и датчиками = все вместе это прибор!!


 
Dred2k   (2003-03-13 11:55) [83]

Мдаа. Пахнет делом физика Рунге...
Для такой тривиальной задачи - MoveBy и закладки, вместо Master-detail по первичным ключам...
Устал я от этого, ей Богу. Фанатик какой-то.
;))


 
Style   (2003-03-13 11:55) [84]

И программой будет пользоваться.. Специалист.. Т.е Все работает не без помощи человека.. А полной автоматизации в условиях радиации не кто и не говорит! За все отвечает дежурный...


 
Style   (2003-03-13 11:56) [85]

Dred2k © :) Это Кэш а не база.. Мне не нужен другой подход.. И я не уверен что он будет быстрее..


 
Dred2k   (2003-03-13 12:05) [86]

2 Style

>Вот пример моего стиля программирования. Посмотрите если
>хотите.
>www.sands.nm.ru/TGTView.zip
>www.sands.nm.ru/NMKExcel.pas

Блин, ты дипломированный генератор обломов, что ли?
;))
Проверь ссылки, мертвы они по ходу...


 
Anatoly Podgoretsky   (2003-03-13 12:05) [87]

Что то не в порядке в государстве с контролем за ядерной безопасностью если такие вещи имеют место быть.


 
Style   (2003-03-13 12:11) [88]

Dred2k >> http://sands.nm.ru


 
Соловьев   (2003-03-13 12:12) [89]


> Проверь ссылки, мертвы они по ходу...

Да нет работают...


 
Style   (2003-03-13 12:14) [90]

>> хорошо NewMail висит..
www.nmk.ru/TGTView.zip
www.nmk.ru/NMKExcel.pas


 
KSergey   (2003-03-13 12:15) [91]

> За все отвечает дежурный...

Козел отпущения, короче.
А то что систему спроектировали балбесы (да! да! да!!! не взирая на стили программирования и проч., я уже не буду цепляться к оброненным словам о возрасте и образовании) - расскажут через 50 лет. Когда, по большому счету, будет все равно, тем более, что вокруг будут другие такие же по уровню выполения "проекты", про которые, впрочем, тоже ничего в свое время говорить не будут.

И, в прицнципе, я охотно верю что, возможно, вокруг работают профессиональные ядерщики, которые не понимают простую вещь: все х заумные формулы - хороши сами по себе, но чтобы это работало - реализация тоже должна быть на том же уровне. А они мыслят "Да фигли тут делать, формулы все есть. Мы вон того паренька посадим, а что? смышленый, работает, старается. Пусть и делает для своей забавы."

Вот ты хочешь, чтобы помогали. А чем?!! Ты пытаешься решить задачу в пределах своих возможностей, которая в этих пределах не решается. О чем тебе и говорят, если еще не понятно. Помогают, надо заметить!


 
Style   (2003-03-13 12:20) [92]

KSergey >>
И все-таки очень негативно настроен форум..
Ничего полезного я так и не услышал.. Объяснять то как это работает наверное и не нужно все-равно люди не поймут.. Да и про безопасность ничего вы незнаете.. Не зная принципа работы вы не вправе критиковать весь проект! Это не справедливо...


 
KSergey   (2003-03-13 12:22) [93]

> www.nmk.ru/NMKExcel.pas

И что? Это уровень?!!!
Да это ляпается за 2 часа (первый раз - за 4 часа). Это же смех! Через OLE подцепиться к экселу и выдавать это за уровень ;))) Это может для ядерщиков уровень. Но не для разработчика ПО "ядерной безопасности".
Думаю, сказал то же, что и Anatoly Podgoretsky (пусть он простит меня за примазывание), только грубее, с переходом на личности. Сегодня он что-то не в ударе ;)


 
Style   (2003-03-13 12:25) [94]

Многие сдесь себя просто возомнили Богами! Так или иначе ошибки все допускают. И если бы даже самый опытный программист писал эту дрянь - это не значит что в один прекрасный день все улетит в трубу.. Нужно просто быть немного вежлевее.
Приняв на себя уже 100ню оскарблений я никому ничего плохого не сказал.. Я лишь пытаюсь вам вдолбить то что, тема совсем другая.. Моя задача это быстро огранизовать работу с БД с таким объемом информации. И дельных изречений практически небыло!


 
Style   (2003-03-13 12:27) [95]

KSergey © >> Я не говорил что это уровень.. Это мой стиль.. Это не значит что я не писал более серьездных вещей..
Я с 8 лет занимаюсь програмированием!


 
KSergey   (2003-03-13 12:28) [96]

Style (13.03.03 12:20)
Не зная принципа
> работы вы не вправе критиковать весь проект! Это не справедливо...

Какой в жопу принцип! Нет никакого принципа, блин!
Когда в мастерской начинают править тормозной диск кувалдой на наковальне - мне наплевать, что рядом стоит супер-пупер компьютерный стенд по настройке карбюратора. Все равно чинить машину тут не умеют ! Вот и все! И не забудьте подумать, прежде чем что-то возражать.

PS: при чем тут детали проекта в которые нас "не хотят посвящать"? Да плевал я на эти детали, когда такое твориться....


 
KSergey   (2003-03-13 12:30) [97]

> Я с 8 лет занимаюсь програмированием!

Ну, ну! ;)))
В таких случаях мне всегда хочется спросить: какую программу ты написал в 8 лет? Не, ну какую? На каком языке, на каком компе ее отладил?
Впрочем и это не важно. Хоть с пеленок! Я вот с одного года бегаю, однако же не чемпион мира, блин...


 
Соловьев   (2003-03-13 12:30) [98]

www.sands.nm.ru/TGTView.zip
неплохо, только я не ставил, но судя по коду задумка не плохая...


 
Dred2k   (2003-03-13 12:31) [99]

> И все-таки очень негативно настроен форум..
> Ничего полезного я так и не услышал.. Объяснять то как это
> работает наверное и не нужно все-равно люди не поймут..
Куда уж нам с одной печонкой...

> Да и про безопасность ничего вы незнаете..
А еще я пишу с ошибками. И не только с орфографическими. В том числе и программы. И частенько бывает. Но пишу их сам. И самые лучшие друзья - мозг, F1 и брат его эксперимент. Ну и пиво по вечерам ...

> Не зная принципа работы вы не вправе критиковать весь проект!
Да куда уж про проект. Тут даже не понятно, что тебе вообще нужно. Уж больно ясно изгалаешь.
Поэтому, остается лишь тихо опасаться всего вашего проекта ...
Проектировшики, блин.
> Это не справедливо...
Зато правда.
Устал я. Прощай.


 
Style   (2003-03-13 12:38) [100]

Dred2k ©> А ты мне между прочем пиво обещал..:(


 
Style   (2003-03-13 12:48) [101]

Да куда уж про проект. Тут даже не понятно, что тебе вообще нужно. Уж больно ясно изгалаешь.
Поэтому, остается лишь тихо опасаться всего вашего проекта ... >>
То что было нужно в принципе я сделал.. Скорость есть.. Осталось лишний раз обезопасить крушение базы..

Хотя еще раз говорю база данных тут не причем.. Все делается в памяти компьютера.. И если комп завис. то соответсвенно не идут сигналы на аппартный блок защиты. и все! Подача раствора U235 останавливается.. АХТУМ


 
Anatoly Podgoretsky   (2003-03-13 12:57) [102]

Вечная память жертвам Чернобыля


 
Style   (2003-03-13 13:05) [103]

Anatoly Podgoretsky © >> Кстати это не смешно!


 
Anatoly Podgoretsky   (2003-03-13 13:09) [104]

Это очень грустно


 
Style   (2003-03-13 13:11) [105]

Это очень грустно>> Грустно сейчас мне... То что люди не понимая происходящего опускают пол года работы..


 
Style   (2003-03-13 13:16) [106]

Честно говоря я наверное забью на всю секретность и принесу выкину программу в инет! Дабы не устрашать народ.
Как говориться помоги себе сам.. Мож чего страного найдете :))


 
Anatoly Podgoretsky   (2003-03-13 13:17) [107]

Чего, чего, так это мы оказывается виноваты, ты будь все таки толерантнее, а то твоя ветка окажется в корзине


 
Style   (2003-03-13 13:20) [108]

Anatoly Podgoretsky-> Я буду очень рад если ты так сделаешь.. Из реальной идеи сделали пустую болтавню!


 
KSergey   (2003-03-13 13:29) [109]

Т.к. идея хреновая


 
Danilka   (2003-03-13 13:36) [110]

ах, какое забавное чтиво я вчера упустил!
парадокс ядреной безопастности, и как много постов!
похоже, надо не только в "потрепаться" сидеть...
ничего, перед тем как пойти домой распечатаю, будет что вечером в туалете почитать.


Собственно, по сабжу, за эти самые пол-года можно было-бы хотябы немного про БД почитать. Тогда и глючить не будет, и все быстро будет работать.


 
Style   (2003-03-13 13:39) [111]

Наверное не надо было раскрывать тему.. Просто сразу появилось очень много умников.. Причем говорящих не по делу!

Для себя я закрываю эту тему! Вместо того чтобы получить граммотный совет по организации базы данных. Я слышу лишь оскорбления и упреки в свой адрес!
Настоящий специалист не будет говорить что Я крут как якут а лохам тут не место...
Я знаю одно у меня есть задача ее надо выполнить.. Я это делаю, я проверяю свою работу.. Это работает и с каждым днем все лучше и лучше!
Я не считаю себя крутым специалистам, но в любой задаче в состоянии найти "оптимальное для всех решение"!


 
Danilka   (2003-03-13 13:50) [112]

Style (13.03.03 13:39)
>Я не считаю себя крутым специалистам, но в любой задаче в
>состоянии найти "оптимальное для всех решение"!

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


 
Danilka   (2003-03-13 13:51) [113]

начнем с одних правильных слов (не моих) "это еще вопрос, может ли тот кто юзает TTable называться программистом..."


 
Danilka   (2003-03-13 13:54) [114]

получить тормоза при доступе к записи в таблице в 40тыс строк! это надо суметь! это не всякому по силам! просто героическая задача! я бы ее и за пол-года неосилил.

сходи на книжный развал, возьми книги по БД, почитай на выходных, глядишь в понедельник и поймешь как сделать так, чтобы тормозов не стало...


 
KSergey   (2003-03-13 14:01) [115]

> Style (13.03.03 13:39)
> Я не считаю себя крутым специалистам, но в любой задаче
> в состоянии найти "оптимальное для всех решение"!

Как можно принять оптимальное решение не ориентируясь в вопросе?!!
И при чем тут "все" ("для всех")? Это к тому, что "очень хорошо разбираюсь в людях"? В смысле я сумею сделать так, что меня похвалят, ведь работал я, в общем то, на совесть (вполне возможно)? Но это же не имеет никакого отношения к реальному качеству выполненной работы!!!


 
Style   (2003-03-13 14:08) [116]

Danilka © >>

получить тормоза при доступе к записи в таблице в 40тыс строк! это надо суметь >>

Начнем все с нуля с целью найти ответ почему тормоза???

Я ошибся 80 тыс. строк 255 полей. Это матрица!

Что мешает сделать Select по конкретному ID?? Хорощо создаем Index для ID --> не на много быстрее!

С Мемо Полями все быстро! Все данные лежат в Мемах и хорошо начитываются.. База весит 324 мега.. Но в один момент размер базы начинает рости и когда 2GB все стоит!!!

Что мне было делать??


 
Jeer   (2003-03-13 14:08) [117]

Пару лет назад на этом форуме уже была ветка о системе управления реактором на Win98.
Слава богу автор той ветки похоже так ничего и не сочинил:)


 
Style   (2003-03-13 14:13) [118]

>>>Как можно принять оптимальное решение не ориентируясь в вопросе?!!
И при чем тут "все" ("для всех")? Это к тому, что "очень хорошо разбираюсь в людях"? В смысле я сумею сделать так, что меня похвалят, ведь работал я, в общем то, на совесть (вполне возможно)? Но это же не имеет никакого отношения к реальному качеству выполненной работы!!!
О Каком качетве работы можно говорить..? О том что я выбрал не тот формат базы.. Просто в данном программе это не существенно! Не информация отвечает за безопасность. Я наооборот не стал усложнять себе жизнь. Поставив Oracle или Microsft Sql наверно кроме скорости я бы получил дополнительные проблеммы.. А сроки поджимают... Деньги уже заплачены. Что делать??
Я оставил Парадокс.. И стал работать напрямую с Table так как в данной ситуации быстрее будет указать на нужный номер строки чем искать его используя SQL..


 
Style   (2003-03-13 14:15) [119]

>> Jeer Еще раз для всех .. Программа сама по себе не управляет безопасностью.. Это Аппартная часть смотрит работает ли программа. Т.е. Все-таки за безопасность отвечает аппартка..


 
KSergey   (2003-03-13 14:16) [120]

Да, к стати.
Так и не названа программа, написанная в 8 лет... Вот так всегда...

PS: помнится в пионерские годы по телеку услышал я такую фразу от одного близкого по возрасту пионера: "Ну я копирую программы для Spectrum и продаю. Зарабатываю своим интелектом". Я долго смеялся. И дело не втом что я такой умный, а в том, что, к сожалению, часто верх своего интелекта выдают за абсолютную вершину развития человечества... (Все это не относится к обсуждаемой ветке, так, к слову пришлось. К сожалению автор, так и не смог понять то, что ему пытались объяснить все: нельзя решить (вернее, нельзя решать!) его задачу теми методами, которыми он хочет. Но он, к сожалению, лишь заявил, что не хочет ничего менять (не нашел я дословно как именно, но смысл такой), вот подскажи ему один винтик, чтобы все полетело и все тут!)


 
Danilka   (2003-03-13 14:18) [121]

>Каждая запись в Base.db Должна хранить в себе 1024 Double
> значений из memos.db
>Структуру memos.db я сделал следующую ID, I1,i2,i3,i4....i254
> т.е у меня уместилось только 254 поля с данными.
>4 строчки в этой таблице приндлежат 1 строчке в таблице base.db!

Супер!!! Кто-бы мог подумать! Ты когда-нибудь слышал такие слова "Реляционная БД", "отношение один-ко-многим"?
млин, ежели кто-то кто перед кем эта докторская (надеюсь не колбаса) будет защищаться хоть чуть-чуть знаком с БД, то работу порвут в клочья, а потом это твой друг порвет тебя...

Style (13.03.03 14:08)
>Что мне было делать??
Я уже сказал - почитать книги по БД. А вообще, прежде чем выбрать тип БД надо думать а потянет ли она эту задачу?
У тебя через пол-года 80тыс.строк, а что будет через 2 года?

Кроме понятий "Реляционная БД" есть еще такая вещь - индексы называется. Из твоих 80 или 100 или 1000 тысяч записей если тебе нужна 1 запись, то ты ее возьмешь быстрее чем глазками моргнешь.

Реально могу посоветовать следующее:
1. Почитать введение в БД, какие они бывают, какие типы для каких целей.
2. Нарисовать ПРАВИЛЬНУЮ модель данных со всеми связями.
3. Прикинуть свою БД, сколько записей максимум в ней будет, коль-во пользователей, и выбрать под этот максимум*2 БД.
4. Если ты нарисуешь модель данных в Ервине или чем-то подобном, то она тебе создаст все таблицы индесы, связи и т.д., иначе сделать все ручками.
5. Если интерфейс у тебя уже готов - прикручивай его его к бд на здоровье! и перекачивай данные.


 
Style   (2003-03-13 14:20) [122]

KSergey © У меня была такая машина как ZX-Spektrum И я уже писал игрульки всякого рода на Basic..
Как появилась PC Стал изучать C++

А в 16 лет устоился на работу программистом инженером :))
Пришлось соскочить на Delphi!



 
Danilka   (2003-03-13 14:22) [123]

а кроме скорости, поставив нормальный сервер БД получишь еще и СТАБИЛЬНОСТЬ


 
KSergey   (2003-03-13 14:25) [124]

Ну вот уже и до противоречий самому себе дошло, как обычно. Начиналось с того, что

> Уже в течении полугода пишу программу ядерной безопасности.

И вдруг:

> Программа сама по себе не управляет безопасностью..

Это как же так понимать?

PS: такую историю рассказывали. На (если не ошибаюсь) Саяно-Шушенской ГЭС стояла система управления уровнем воды на ЕС ЭВМ. Сделано было так, что если машина висла, то на всякий случай створки плотины полностью перекрывались. Таким образом персонал станции (которая находилась над плотиной и обзор был хороший) периодически мог наблюдать такую картину: а плотиной вгруг раз - и нету "речки". Утекла (прямо хвостик от нее буквально видать). Камушки, там, на солнышке переливаются ;) Ну и тут же срочно кто-нибудь бежал кнопку Reset нажимать. Вот такая вот система нипель.


 
Style   (2003-03-13 14:27) [125]

Danilka © >> "Реляционная БД" = Я каждый день на работе слышу это слово!

Индексы..->> Видать в Парадоксе нет так уж шустро они работают Как мне нужно было..

А чтобы сейчас переходит на другой формат БД.. Нужно тщательно все осмыслить нужно ли это..?? И что мне это даст!

Так как Memos.db 80000 строк больше не будет.
Это 2 Спектра на 4 канала! для 10000 строк..

ПРосто нельзя забывать про скорость это очень выжно.. Нельзя забывать что все значения это Double!


 
uw   (2003-03-13 14:34) [126]

Самая классная ветка, которую я читал.


 
Danilka   (2003-03-13 14:38) [127]

Style (13.03.03 14:27)
1. числа, кстати, мало места занимают, и быстро работают по сравнению с текстом.
2. у меня на домашнем не самом быстром компе орокол работает с таблицами>2млн. строк безо всяких тормозов.
3. если все правильно описано, пересадить программу с парадокса на другую БД гемороя будет мало, максимум неделя.
4. если известно, что "2 Спектра на 4 канала! для 10000 строк"=const, то можно вообще обойтись без БД... сделать все в одном файле, скорость будет просто офигительная.


 
nikkie   (2003-03-13 14:51) [128]

>Style
>...Электросталь...
Не шутишь? Боже мой, у меня там родственники, да и Москва под боком - всего 50 км...

1. Скажи честно - что будет, если программа сбойнет и вернет в этот прибор не те данные, не вовремя или вообще ничего не вернет?

2. Конечно, ID должен быть индексирован (а проще - primary key). Конечно это будет быстрее на порядки. Элементарная математика. Нет ключа - в среднем 80000/2 сравнений при поиске. Есть ключ - порядка log_2(80000) ~ 17 сравнений.

3. Проблема тормозов может быть просто в том, как написана программа. Общее соображение - основное время уходит на открытие query. Если тебе надо получить 1000 значений и ты ради этого запускал 1000 query - разумеется все тормозит.

4. Sheriff дело предложил. Если тебе нужно всегда 10000 значений - пусть у тебя будет всегда ровно 10000 записей. Вместо добавления новой / удаления старой - просто переписывай данные в это записи. База не будет разрастаться, не будет требоваться pack. Храни ID последней переписанной записи - последние 10000 значений идут в следующем порядке
ID, ID-1, ID-2,... 1, 10000, 9999, 9998, ... ID + 1

PS. Как страшно... Все-таки, чтобы писать такие программы надо же хоть минимальным опытом обладать.


 
Ksanka   (2003-03-13 14:53) [129]


> Soft © (12.03.03 14:02)
> Своему знакомому, когда он с таким примерно вопросом ко
> мне пришел я сказал, чтоб взял Access. Теперь у него все
> без проблемм работает, быстро и стабильно.


Access и ядерная безопасность.... мда...
Soft, вы никогда не видели в Ваших программах в Access приколов, когда в вычисляемых полях, где использовались только встроенные функции Access, вместо результата выдается #Ошибка? или #Имя?, если закрыть базу, потом опять открыть - все ОК? Или перестают работать запросы, с которыми было все ОК, и лечится все вышеописанным способом? Благо, база просто для облегчения труда нескольких людей, и в случае чего-нить нехорошего миру ничего не угрожает...
Вышеописанные штучки Access и подвигли меня на прощание с ентой "СУБД" и изучение Delphi...
Кста,в Access"овом хэлпе написано о том, что сей продукт не предназначен для таких серьезных задач.

Надеюсь, программы оборонного значения под управлением Access реально не используются, иначе выход один - срочно эмигрировать куда-нить подальше, например - на Марс :-(




 
Style   (2003-03-13 14:59) [130]

nikkie ->> Open естественно один!!

4. если известно, что "2 Спектра на 4 канала! для 10000 строк"=const, то можно вообще обойтись без БД... сделать все в одном файле, скорость будет просто офигительная
>> Наверное это действительно класcное решение.

Только времени у меня не было.
Главное что бы файл не гакнулся..
в Памяти хранить pointer"ы на на № строки.. Что бы быстро делать Seek!

Но если так подумать то у меня сейчас тоже самое. Только в Paradox"e Я храню в памяти BookMark - указатели
TBookMark = pointer тот же самый Seek..

И скорость очень быстрая.!



 
nikkie   (2003-03-13 14:59) [131]

>Danilka
>4. если известно, что "2 Спектра на 4 канала! для 10000 строк"=const, то можно вообще обойтись без БД... сделать все в одном файле, скорость будет просто офигительная.

Дело говоришь! Действительно, никакая база не нужна. Будет 1 Файл размером 80 Mb (10000 записей * 1024 значения * 8 байт на значение). Скорость и надежность - будет супер.


 
Style   (2003-03-13 15:04) [132]

nikkie -> Если записи однаковые в размере Paradox Append после Delete вставляет запись на место удаленных - файл не разростается!


 
Leon Crom   (2003-03-13 15:05) [133]

мля люди много разговоров а помощи почти ни какой...

ТО Style
а можно конкретнее узнать как долго твоя программа работает...


 
Style   (2003-03-13 15:08) [134]

nikkie © -> Да пожалуй лучше отказатся от базы.. вообще. Хранить в самом файле Pointer на последнюю удаленную и перезаписывать новой... Это действительно хорошая идея.

В принципе Paradox сейчас у меня делает тоже самое.. Мне остается незаметно от глаз заказчика перевести прогу на свой формат файла.. Наверное пока лучше написать для этого компонентик.


 
Style   (2003-03-13 15:10) [135]

Leon Crom© > На одно рабочей станции уже больше 1 месяца.. Файл размеры не меняет!


 
Leon Crom   (2003-03-13 15:24) [136]

to Style (13.03.03 15:10)
я к чему веду по ходу удали пока глюки все и баги... а так ну она ведь РАБОТАЕТ... по хорошему ну хрен с ним что тормозит... мои программы тоже иногда тормозят...:)при чем гораздо существенее... заказчику объясни там в терминах что она работает в приципе быстро, а главное стабильно.... я в таких случаях ставлю гаугу и пишу круно PLEASE WAIT... прогресс бежит глаза радует, а недовольных посылай к разработчику майкросфта...


 
Style   (2003-03-13 15:29) [137]

Leon Crom © > В том то и дело что уже не Тормозит..используя Теперь я просто прыгаю по файлу Базы спомощью BookMark


 
Satirus   (2003-03-13 15:36) [138]

> Да и про безопасность ничего вы незнаете..
ЗАПОРОЖСКАЯ АЭС

СИСТЕМА ДИСТАНЦИОННОГО КОНТРОЛЯ

Информационная подсистема

Комплекс программ регистрации параметров

Руководство программиста
Руководство системного программиста
Руководство по эксплуатации
...
СОДЕРЖАНИЕ


1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ. 4
2. СОСТАВ И ХАРАКТЕРИСТИКИ КОМПЛЕКСА 5
3. УСТАНОВКА И НАСТРОЙКА КОМПЛЕКСА 8
4. РАБОТА С КОМПЛЕКСОМ 11
4.1. РАБОТА С АРХИВАТОРОМ. 11
4.2. РАБОТА С СЕРВЕРОМ АРХИВА 13
5. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ 15
5.1. СТРУКТУРЫ ДАННЫХ АРХИВАТОРА 15
5.1.1. Настроечные таблицы 15
5.1.2. Файлы данных, срезов и индексов 16
5.2. СТРУКТУРЫ ДАННЫХ СЕРВЕРА АРХИВА 18
5.2.1. Пакет запроса 18
5.2.2. Пакет ответа 19
6. СООБЩЕНИЯ ПРОГРАММ КОМПЛЕКСА 20
6.1. СООБЩЕНИЯ АРХИВАТОРА 20
6.1.1. Информационные сообщения 20
6.1.2. Предупреждения 20
6.1.3. Сообщения об ошибках 20
6.2. СООБЩЕНИЯ СЕРВЕРА АРХИВА 21
6.2.1. Информационные сообщения 21
6.2.2. Предупреждения 21
6.2.3. Сообщения об ошибках 21

...
Все, что я могу посоветовать тебе лично от себя, просто откажись от этой работы и скажи заказчику, пусть наймёт высококлассного специалиста из области работы с БД промышленного уровня.
А тренироваться на таких проектах должно быть, если не страшно, так хотя бы стыдно.

Сразу чуствуется раненая психология молодого бойца...


 
Danilka   (2003-03-13 15:38) [139]

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

Style
Думаю, что тебе надо на самом деле уйти от БД.
Скорость, размер программы, место отведенное под данные, стабильность, прожорливость (памяти) - все это станет намного более привлекательным. Тем более что тебе, вроде, эта область более знакома чем БД.

Особенно если учесть что для твоей задачи надежность - главный фактор.
Извиняюсь, ежели где нагрубил.

Ksanka © (13.03.03 14:53)
полетишь на марс, возьми меня с собой ;)


 
Danilka   (2003-03-13 15:39) [140]

Satirus (13.03.03 15:36)
здесь, вроде-как БД и ни к чему...


 
T2   (2003-03-13 15:46) [141]

Рекомендую использовать алгоримы сжатия перед записью в таблицу.
Например использвать комп. ZipTv или VCLZip.
Полученные данные переводить в строки (или в Stream). Сжимать.
Хранить эти мелкие данные в обычной таблице.
При отображении - все поля Calk и обратное преобразование.


 
Leon Crom   (2003-03-13 15:51) [142]

ТО Danilka © (13.03.03 15:38)
эх, (со вздохом) иногда не получается быструю и красивую....
по началу все так классно здорово и прямо шикарно, но когда заказчик переносит сроки и требует проект раньше вся красота летит сам знаеш куда... главное чтоб без глюков... (хотя бы в третьем релизе)


 
KSergey   (2003-03-13 15:51) [143]

> T2 © (13.03.03 15:46)

Ну-ну


 
KSergey   (2003-03-13 15:58) [144]

> Leon Crom © (13.03.03 15:51)
> ТО Danilka © (13.03.03 15:38)
> эх, (со вздохом) иногда не получается быструю и красивую....
> по началу все так классно здорово и прямо шикарно, но когда
> заказчик переносит сроки и требует проект раньше вся красота
> летит сам знаеш куда... главное чтоб без глюков... (хотя
> бы в третьем релизе)

Мля! Я тоже так пишу свои программы, но они НЕ УПРАВЛЯЮТ ЯДЕРНЫМИ РЕАКТОРАМИ!!! Потому и требования и отношение к ним соответствующее. Ну даже если и пропадут все данные у заказчика, ну "обсудим" мы с ним этот вопрос, найдем компромисс как справиться с ситуацией - и понеслась далее. И все нормально.
Но вот после Чернобыля - все. Ничего (и никто) далее уже не несется. Вы это понимаете, в конце-то концов?!! Вот если бы автор ветки не упоминал громких слов о "ядерной безопасности" - и все нормально. Ну регистрит себе приборчик, ну поругали бы все дружно парадокс, ну потрепали бы нерадивого что книжки не читает - и все бало бы нормально. Но с такими заявочками - не смешно это, понимаете?!!


 
Satirus   (2003-03-13 16:00) [145]

2Danilka © (13.03.03 15:39)
да это я просто первый попавшийся документ открыл, чтоб опровергнуть аксиому:)
а БД как-раз очень и к чему, только нет у меня желания что-то кому-то доказывать.

Есть только пожелания к исполнителю, чтоб потом совесть автора не замучала на старости лет...


 
Style   (2003-03-13 16:04) [146]

Satirus >> Где ты это откопал..
Моя программа это лишь маленькая часть этого комплекса.. ЕЕ также и настраивают специалисты..

(хотя бы в третьем релизе)>> Это уже версия 7.4.4
Я начал с 7 ой.. До меня ее делали на Visal Basic


 
Style   (2003-03-13 16:08) [147]

KSergey © >> Вопервых это не Ядерный реактор... Это так назывемый Патчук...

И это не U235 в чистом виде это Раствор!


 
Style   (2003-03-13 16:09) [148]

Я бы и не взялся за такую хрень.. :)


 
Satirus   (2003-03-13 16:11) [149]

>Но вот после Чернобыля - все.
Кстати, если кто не в курсе, Чернобыль полетел по вине вояки, который решил провести "уникальный" эксперимент на рабочем реакторе. И несмотря на все уговоры технарей, он его таки провёл...
Программисты там не причём. Софт, который там до сих пор используется, ещё ни разу не давал серьёзного сбоя с момента его установки (задолго до аварии) и сейчас используется для мониторинга различных показателей ЯРБ (ядерной и радиационной безопастности). Говорю это, как человек, который работает в этой конторе, которая уже многие годы занимается разработкой аппаратной и програмной части для поставок и внедрения на атомные станции. Контора образовалась в результате распада института ядерной физики в г. Киев.


 
KSergey   (2003-03-13 16:26) [150]

> Satirus (13.03.03 16:11)
> Кстати, если кто не в курсе, ...
> Программисты там не причём.

На всякий случай замечу, что я не имел в виду программистов. Просто к слову.
А по поводу самого поста Satirus (13.03.03 16:11) сразу вспоминается Выбегалло... Но это опять же так, к слову.


 
Style   (2003-03-13 16:28) [151]

Еще раз о моей задаче..

Так что База Данных или Файл??

Как Test вариант программы начал делать ее на Paradox..

1. Получаемая информация..
С определенным интервалом времени программа получает данные от Прибора.
4-ре спектра по 256 Double значений.
2. 4 спектра умножаются на матрицу дабы немного сгладить исходный образец.
3. Производятся математические вычисления. И подается сигнал прибору.
4. в результате появляется около 400 констант на данный отрезок времени.

Все это я записываю в БД!

Структура базы данных. Как планировалось с Мемо полями!

@DateTime datetime,
@Er1 int, - ошибка датчика 1
@Er2 int, - ошибка датчика 2
@Er3 int, - ..
@Er4 int - ..
@Const Memo - Константы
@U2351 float
@U2352 float
@U2353 float
@U2354 float
@Data1 - Memo - 512 Double значений (исходный, сглаженный спектр)
@Data2 - Memo - 512 Double значений (исходный, сглаженный спектр)
@Data1 - Memo - 512 Double значений (исходный, сглаженный спектр)
@Data1 - Memo - 512 Double значений (исходный, сглаженный спектр)

Мемо поля вызаваль попросту крах всей DB
пришлось поступить так

base.db
@DateTime datetime,
@U2351 float
@U2352 float
@U2353 float
@U2354 float
@Er1 int, - ошибка датчика 1
@Er2 int, - ошибка датчика 2
@Er3 int, - ..
@Er4 int - ..
@ID float

const.db

@ID
@double1, float
@double2, float
@double3, float
...
@double254, float


const2.db

@ID
@double1, float
@double2, float
@double3, float
...
@double254, float


memos.db

@ID
@double1, float
@double2, float
@double3, float
...
@double254, float

В memos.db занашу 8 строк 4 спектра и 4 сглашенных спектра..


Перемещаюсь по базе с помощью BookMark?? Скорость летает!!

Так что Файл или БД

Если БД то какая должнабыть структура что бы все было быстро подумайте сами!


 
Satirus   (2003-03-13 16:51) [152]

2KSergey © (13.03.03 16:26)
Согласен. Мой пятак в этой ветке лишний.


 
REA   (2003-03-13 17:00) [153]

>Уже в течении полугода пишу программу ядерной безопасности.

Мне тоже как то не по себе стало, но все же: в чем эта самая "ядерная безопасность"? Если спрогнозировать попадание осколков в кремль - это одно, если моделировать ядерный взрыв или там принимать решения в реальном времени это другое.
Для серьезных задач ни Delphi ни Paradox ни Windows не подходят...


 
Satirus   (2003-03-13 17:08) [154]

2REA © (13.03.03 17:00)
>Для серьезных задач ни Delphi ни Paradox ни Windows не подходят...
Ты забыл ещё добавить:
"Для серьезных задач ни Delphi, ни Paradox, ни Windows, ни форум Мастаков Дэлфи "Потрепаться" не подходят..."


 
Style   (2003-03-13 17:10) [155]

REA © >> Эта не такая ядерная безопасность как себе сразу все вообразили.. Это не ядреный реактор.. Это небольшой патчук куда вливается раствор. И цель всего комплекса (и аппартной части тоже) запретить переполнение патчука. дабы эта хрень не вышла наружу...


 
Style   (2003-03-13 17:15) [156]

"Потрепаться" >> это не моя инициатива! Вообще я вся ветка была посвещена одной проблемме.. До которой народ так и не догнал..

Почему я не использую SQL??

потому что мне нужен быстрый доступ к информации..
Все предлажения и структуры базы данных были не существенны для моей проблеммы.. (кроме создания своего формата файла)

Представьте если я буду делать Update.. Его придется делать не
одной записи а к примеру 1000 а то и более. (если их раскидать как строки Мемо)

Какая тут будет Скорость???


 
Anatoly Podgoretsky   (2003-03-13 17:28) [157]

Ну вот опять у тебя народ виноват, интересно когда же будешь ТЫ


 
Style   (2003-03-13 17:39) [158]

Anatoly Podgoretsky © >> Товарищь модератор.. Откройте глаза!
Я не просто так не использую SQL.. Вообще какой формат БД не был наверное быстро не будет Если только Мемо поля не использовать! (Но мемо поля - это глюк)..

Если мне предлагают такую структуру.

Как мемо можно описать в БД подругому??

@Memo =

@ID (Master Detail)
@StrID номер строки в Мемо
@String строка из мемо..

Если у меня этих строк 1000 то мне придется делать 1000 Update!!
Какая тут будет скорость?? Подумайте люди!



 
Anatoly Podgoretsky   (2003-03-13 17:43) [159]

Style (13.03.03 17:39)
Я к тебе не как модертор обращаюсь, но у тебя на протяжении всей ветки только другие виноваты, ну такие плохие парни.


 
Satirus   (2003-03-13 17:44) [160]

Это тоже самое, что винить топор в том, что с помощью его нельзя точно также аккуратно вырезать заготовки с фанеры, как и с помощью лобзика.
Вместо того, чтобы усовершенствовать свое умение владением топора, лучше освой работу с лобзиком или попроси того, кто уже умеет и владеет.


 
Style   (2003-03-13 18:04) [161]

Anatoly Podgoretsky © >>
Я никого не виню на протяжении всей ветки. А говорю то, не
вместо того чтобы говрить по делу задумайте о самом
вопросе организации БД в данной ситуации.

или попроси того, кто уже умеет и владеет>>
Что я и выпытаваю от вас на протяжении всей Ветки.!

Уже не трудно догадаться до того что я хотел сделать. И если бы
вы хоть въехали в суть самого вопроса. Может ответили бы мне как
настоящие специалисты!


 
Style   (2003-03-13 18:18) [162]

И все таки нашелся один хороший человек. Написал мне письмо.. Хотел на пальцах мне объяснить что я не прав..
Но в итоге со мной согласился. И предложил еще более оптимальное решение!

Люди или я что то не так объясняю или вы так уверены в своей правоте и в своих стандартных подходах...

Самый умный ответ по поводу. Хранения информации в отдельном файле! Это лучшее что я услышал.

А так из темы с которой могут столкнутся другие программеры сделали пустую болтавню...


 
alxx   (2003-03-13 18:18) [163]

Мне влом все это читать, но если не обращать внимания на "надежность" парадокса могу порекомендовать следующее (может быть уже порекомендовали:

Одна таблица

1.<IDENTITY> - автоинкремент
2.Дата и Время - (DateTime)
3.Концентрация U235_1 - (Float 20 знаков после запятой)
4.Концентрация U235_2 - (Float 20 знаков после запятой)
5.Концентрация U235_3 - (Float 20 знаков после запятой)
6.Концентрация U235_4 - (Float 20 знаков после запятой)
7.Oшибка 1 - (SmallInt)
8.Oшибка 2 - (SmallInt)
9.Oшибка 3 - (SmallInt)
10.Oшибка 4 - (SmallInt)

Вторая таблица

1. Номер выборки (Identity из первой таблицы).
2. Спектра (1..4)
3. Номер Double значения (1..256)
4. Само Double значение.

Таблица 2 будет охрененно большой, но ее структура весьма проста. Нужны индексы по 1,2,3 полю.

Ну и пофигу, что нужно будет 1000 апдейтов.



 
Style   (2003-03-13 18:34) [164]

>>>Ну и пофигу, что нужно будет 1000 апдейтов.
Даже если это займет 1 сек. меня это не устроит..

Сейчас Insert в базу, расчеты, удаление из базы! проходит от 100 до 250 милисекунд.

А с Апдейтами быстрее не получится.

Не устраивает такой подход.


 
Style   (2003-03-13 18:36) [165]

>> Просто программа чаще пишет в базу чем читает из нее.!

Поэтому запись должна проходить незаметно!


 
REA   (2003-03-13 18:38) [166]

Все же надо сначала определиться к каким последствиям может привести переполнение "патчука" и что будет, если "эта хрень" все-таки выйдет наружу.
Я ипользую Windows+Delphi+Paradox (хотя и с приседаниями) для систем мониторинга на буровой, но там все не так критично и подстраховка другого железа все-же есть. Темп опроса 100мс, порядка 100 параметров, запись на диск 1сек. В принципе запись в таком темпе работает и с Interbase. Работать в таком режиме можно наверно от недели до месяца - windows все равно-падает, хотя бы по причине игр операторов.
Для более требовательных к надежности систем лучше использовать другие средства, хотя конечно можно поставить 10 компьютеров с windows - один да выживет в каждый момент времени.


 
alxx   (2003-03-13 18:40) [167]

Ну и запросики...

Тогда остается в файл писать.


 
fool   (2003-03-13 18:49) [168]

прикольно в конце рабочего дня расслабиться, просмотрев ветки вроде этой: разговор слепого с глухими; сильного с умными и т.д. и т.п.
"зачем мне книги по БД читать - я привык делать то, что всем нравиться, причем с 8-ми лет, а вам не нравиться, может вы с такой ответственностью не сталкивались или в армии не были"
"зачем мне надо представлять что такое раляционная БД - я на работе это каждый день слышу", может слышать недостаточно?


 
Style   (2003-03-14 07:55) [169]

REA>>Все же надо сначала определиться к каким последствиям может привести переполнение "патчука" и что будет, если "эта хрень" все-таки выйдет наружу. >> На некоторое время остановится работа и придут люди похожие на космонавтов уберать всю это дрянь. :)
Это не такая радиация как себе вообразили.
Вообще U235 опасен только при попадания на открытые участки - глаза, рот - при попадании в кровь.

REA>>>и подстраховка другого железа все-же есть. >>
Соответственно и здесь есть подстраховка.
Если Windы повиснут на это предусмотрен аппаратный блок защиты.
>> На счет игр операторов..
Заблокируй им доступ чтоли к ним
EnableWindow(FindWindow("Progman",nil),false);
EnableWindow(FindWindow("Shell_TrayWnd",nil),false);

> Значит ты PARADOX используешь.. Почему люди боятся парадокса и прямой работы с Таблицами. Потому что сложилось общее мнение о том что будут пропадать записи?? Они не будут пропадать если вовремя сделать FlushBuffers -> записать данные на диск и забыть про них.
Программа уже неделями пахала на некоторых рабочих станциях. И все работало быстро и красиво. Единственное что меня волновало как помимо того чтобы быстро записать информацию еще быстро ее и считать. (Даже в момент набора данных и записи в базу)
Да я извратился и сделал так.. Но это работает!

fool © >> "зачем мне надо представлять что такое раляционная БД - я на работе это каждый день слышу", может слышать недостаточно?
>> Как никак я с этим работаю! И потому знаю что SQLSERVER на одну рабочую станцию смысла ставить нет. Конечно запросы будут проходить быстрее, но с 1000 а то и более апдейтами мы не выдем за 1 сек.

alxx ©>> Таков запрос.? И ничего тут не поделать.. А если это стало работать под Paradoxом быстро используя прямую работу с
таблицами... Потому я и отказался от BDEшного SQL, так как 1000 Updatов это слижком долго.. Я думал о том что буду заливать данные в один файл, но в то же время не хотел отказываться от базы данных ( вдруг заказчик затребует какой нибудь отчет из полученной инфы здесь то и понадобится Select..)


 
KSergey   (2003-03-14 08:10) [170]

Если немного по теме, то лично я бы скорее тогда уж состряпал какой-нибудь аппаратный блочек, который бы все делал, в особенности сохранял бы - все просто в ОЗУ (запитаном от аккумуляторов и т.д.). Здесь, на мой взгляд, можно добиться намного бОльшей надежности, нежели на дельфи и иже с ним. Я из всей ветки так и не понял ни разу зафиг вобще нужна БД: объем хранимой информации, как я понял, вообще постоянен. А 192 метра ОЗУ (или сколько там? во всяком случае упоминание каких-то заоблачных объемов я не встречал) сейчас вообще не проблема.
Только не надо говорить про сложные рассчеты. В конце концов, если уж и правда сложноватые, берется микроконтроллер специализированный - и вперед!


 
Style   (2003-03-14 08:24) [171]

KSergey © >> микроконтроллер специализированный - и вперед! >>

А как же все настройки пользователя. Прежде всего это около 400 пользовательских констант( ну это они их так назвали) - вернее переменных значений, которые помимо обработанных данных записываются в БД!
Вообще принемаются Спектры с данного прибора.. Рисуются на дисплее Спектры умножаются на матрицу. (таким образом сглаживаются).. Далее находится определенный пик сглаженного спектра. Из этого пика берется интеграл исходя из ворот интегрирования задданых пользователем. Из интеграла высчитывается концентрация.. В зависимости от изменния концентрации меняется напряжение на дачиках - ПВН..

И всю эту информацию нужно сохранить. И желательно быстро и чтобы можно было выводить из этого отчеты. И вто-же время нельзя забывать про зарисовку.. которая тоже занимает где-то 50 - 100 милисекунд с использованием TDIB..

Нельзя забывать про ограничении в скорости машины. Это ISA плата.. Шины ISA уже давно нет.
Переводить прибор на PCI довольно трудоемко и деталь очень дороги работающие на такой частоте.

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

Что мне тогда надо было делать???


 
Style   (2003-03-14 09:25) [172]

Наверное лучше будет переделать на работу с одним файлом, а не БД
.. Но и оставить Базу данных в которой хранить указатели на позицию данных в своем файле. (для этого можно оставить и Парадокс)
И тогда и скорость будет еще лучше и Select"ы можно будеть быстро делать..

Как вам такое решение??



 
Sergey13   (2003-03-14 09:30) [173]

2Style (14.03.03 08:24)
давай открывай новую ветку "Ядерная безопасность2", а то эту еле дочитал. На моей памяти это рекорд для веток про БД 8-)

По делу.
А эти 10000 записей с подчиненными должны сохраняться после завершения программы (все равно какого)? Или после начала работы сначала накапливается 10000 а потом начинается перезапись?
Если 2, то (просто как идея безумная 8-) можно попробовать использовать таблицы в памяти(Типа RxMemoryData , правда я не уверен в их поведени на таких объемах), т.е. на диск вообще ничего не писать.
Если 1, то можно попробовать тот же способ, но с добавлением записи изменений в рельную БД. Т.е. при добвлении/удалении в "виртуальной базе" идет короткая транзакция в "реальной".

Но по любому - необходимо иметь достаточно ОЗУ, что бы обеспечить расположение данных именно в нем, а не в свопе.


 
KSergey   (2003-03-14 09:33) [174]

> А когда ко мне приходит заказчик и говорит что надо собрать
> 24 компьютера с приборами. ПОтому что он уже их продал :)
> Да а программа еще не готова. Да и с Мемо полями ничего
> не получается.. Остается неделя чтобы собрать компы, поставить
> приборы, доделать программу что бы она работала (потом уже
> можно допустить обновления версий)

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

Года 2 назад видел разработку нашего советского НИИ для измерения жирности молока (заметьте: если что - тут даже не опасно попадание в глаза!). Так она была сделана профессионалами, на порядки качественнее!!! Так что остается лишь согласиться с Anatoly Podgoretsky: "Что то не в порядке в государстве с контролем за ядерной безопасностью если такие вещи имеют место быть".


> А как же все настройки пользователя.

Я не понял в чем проблема. А что им сделается? Настройки хранятся в ПЗУ ("это около 400 пользовательских констант" - да хоть тыща!). Пользователь ну никак не зменяет все эти контанты в течении 1 секунды. Так что это, как раз, можно вынести на комп с красивыми окошечками и на досуге переливать в аппаратную часть.

> Вообще принемаются Спектры с данного прибора.. Рисуются
> на дисплее Спектры умножаются на матрицу. (таким образом
> сглаживаются)..
> И всю эту информацию нужно сохранить.

И в чем проблема? Уточните.

> И вто-же время
> нельзя забывать про зарисовку.. которая тоже занимает где-то
> 50 - 100 милисекунд с использованием TDIB..

Я не понял о какой зарисовке речь. Вообще закралось смутное подозрение, что рисуется на экране, а потом на основании рисунка все вычисляется. Или я то-то недопонял?

> И желательно быстро
> и чтобы можно было выводить из этого отчеты.

Стоп. Давайте так: мухи отдельно, котлеты одтельно. Отчет для кого? Для человека? Человек не может (не способен) прочитывать 4000 чифр за 1 секунду. Я в этом уверен. Следовательно, отчеты для человека - это тоже не критичные по времени вещи (задержка в неск. сек. тут ничего не решает). Если речь, конечно, о неких статистических отчетах, а не о той лампочке, зажигание которой говорит, что через 5 сек. капец. Так что тут опять не понятно зачем торопиться.

> Нельзя забывать про ограничении в скорости машины. Это ISA
> плата.. Шины ISA уже давно нет.
> Переводить прибор на PCI довольно трудоемко и деталь очень
> дороги работающие на такой частоте.

Что такое дорогие?! А на фоне стоимости даже датчиков - тоже дорогие? Не говоря уже о всей установке в целом. Впрочем, при чем тут вообще шины компа IBM PC, когда речь идет о внешнем аппаратном блоке.

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


 
app   (2003-03-14 09:49) [175]

Sergey13 © (14.03.03 09:30)
На фиг, хватит и одной ветки, что бы еще раз не разводить флейм по новому, а тут все перед глазами.


 
Style   (2003-03-14 10:04) [176]

app © >> Ну хоть бы ответы сохранил!


 
Style   (2003-03-14 10:09) [177]

>> Впечатление, что система разработана делитантами..

Неверное Впечатление. Их Приборы уже лет 7 на производстве.

Просто тут не идет речь о реальной безопасности..
Лишь об организции БД или замены ее на Один файл..

Сама безопасность подстраховывается аппаратно. Т.е. если даже
винт полетит или чего с компом ничего страшного в этом нет.
Процесс остановится.




 
Style   (2003-03-14 10:45) [178]

Я тут стишок сочинил наверное по теме..

Некого просить о помощи в трудную минуту
Наверно только бога но вериш в него смутно
Немного жутко становится если представить
Что ты совсем один и никого нет рядом
Ощущать взглядом по всюду пустоту
Слышать вместо музыки только тишину
Опустить руки закрыть глаза
Хочется отправит душу свою на небеса
Может там найдутся родные голоса
А может лица которые смотрят сверху на тебя
Ужасаются страдают или просто плачут
Как будто понимают что нельзя иначе
Но всеж если поверить что найдутся люди
Тогда они изменят твою судьбу других осудят
Так будет если не сидет на месте
Не загоняться местью лестью всем вместе
Думать о своей полезности в этом обществе
Где нет верности есть одиночиство
Тут просто каждый за себя в точности,
как звери запертые в клетку
и чтобы выйти на свободу готовы грызть решетку
Снять с тебя шмотки продать за сотку баксов
Купить натсов, сникерсов, марсов
Против них нет санкций нет законов
И каждый возомнил себя судьей и прокурором...



 
KSergey   (2003-03-14 10:55) [179]

> Style (14.03.03 10:45)
> Некого просить о помощи в трудную минуту
> Наверно только бога но вериш в него смутно
> Немного жутко становится если представить

Чушь собачья! просто учится надо, вот и все.


 
Style   (2003-03-14 11:04) [180]

KSergey© >> Просто некоторые ставят себя очень умными..
И только твердят что тебе учится надо..

Учится всегда надо.. И учится большинство на своих ошибках.

Самая главная моя ошибка то что я тему ветки не так назвал
После чего попер сплошной негатив!


 
REA   (2003-03-14 11:24) [181]

Проблемы такого плана могут быть:
Paradox иногда при сбоях не убивает файлы блокировки lck, которые могут мешать работе.
Windows увеличивает до беспредела файловый кэш при частой записи, если его не ограничить. А в XP его не ограничить.
Таблицы иногда портятся при сбоях, даже если local cache = true и делать Flush.
Ну и вообще windows не RealTimeOS - какие-то задачи по управлению на нее лучше не вешать.



 
Style   (2003-03-14 14:08) [182]

Paradox иногда при сбоях не убивает файлы блокировки lck>>
Их легко убить перед запуском программы.

>>Таблицы иногда портятся при сбоях, даже если local cache = true и делать Flush.>>
От конкретных глюков не одна база не защищена.

>>Windows увеличивает до беспредела файловый кэш при частой записи, если его не ограничить. А в XP его не ограничить.
Работать будем на 98

>>Ну и вообще windows не RealTimeOS - какие-то задачи по управлению на нее лучше не вешать.>>>

Управление не очень существенное. Программа это инструмент есть человек который, посмотрит, исправит.

Вообще-то не одна база данных не подойдет для этой задачи...
Нужен только своп! Только файл и все...




 
Anatoly Podgoretsky   (2003-03-14 14:20) [183]

Style (14.03.03 11:04)
Кто же это учится на чужих ошибках, учатся на своих


 
Style   (2003-03-14 14:55) [184]

Anatoly Podgoretsky ©>>>
А я что написал :)

Ну согласитесь наконец что
БД и SQL это не для такой задачи. (если оставить компьютер и Windows)


 
icWasya   (2003-03-14 15:22) [185]

ну так нафига база данных вообще??


 
Style   (2003-03-14 16:18) [186]

ну так нафига база данных вообще??>>

Без быза Потеряем быстрый поиск по базе (для создания отчетов)
ПОтому я и работал с Таблицами напрямую.

Конечно нужно взять Кнута и написать все свое.
для этой задачки. Совой поиск в файле сравнения участков времени и изменнеии значений.

Напишу компонент покажу...


 
AndrewK74   (2003-03-14 16:30) [187]

Сдается мне, что проблема чисто организационная. Вариант решения: сэкономив на датчике, нанять человека с понятием. Тогда и ядреной безопасности прибавится.


 
Style   (2003-03-17 07:59) [188]

>> AndrewK74: человека с понятием.
Это с каким таким понятием!

-- Вот в выходные написал свой форматик.
посмотрите плиз www.sands.nm.ru/swaptable.zip

Наверное для такого рода задач. Это и есть оптимальное решение
Конечно это только локальный своп (не для пользования в сети). Хотя я думаю можно написать и свой сервис.
Код еще сыроват и в компонент его даже вставлять не стал.
Если уж и делать компонент, то наверное лучше наследоваться от TDataSet.
Как вы думаете???






 
Style   (2003-03-17 09:44) [189]

>>TSwapTable

Да и еще вопрос? Наверное лучше создавать Индекс в виде Бинарного дерева. Как вы думаете стоит ли его хранить в оперативной памяти. Или работать с отдельным файлом.??


 
Andrey   (2003-03-17 12:19) [190]

Уф... недумал что дочитаю...

>Работать будем на 98
Ню-ню... Строго говоря операционная система с жесткой многозадачностью (когда основной процесс по таймеру или другим способом принудительно прерывает пользовательские процессы) каковой является MS Windows вообще и Win98 в частности, вообще неприминима для задач требующих обработки данных в реальном времени... ню-ню...



Ладно попытаюсь забыть о словах "ядерная безопасность" и подойти как к задаче организации хранения-обновления-чтения данных.

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

Хранение данных: ну это понятно
integer - 4 байта
double - 8 байт
и т.д.

P.S. Блин, если уж люди с такой квалификацией пишут системы "контроля ядерной безопасности"... иправду не все впорядке в у руководства головах...

P.P.S. А как ты "в 16 лет устоился на работу программистом инженером..."? Случаем не "волосатая лапа" тебя продвинула?




> REA
> Для более требовательных к надежности систем лучше использовать
> другие средства, хотя конечно можно поставить 10 компьютеров
> с windows - один да выживет в каждый момент времени.

Так операторы по сети игратся начнут и всю сеть завесят :) Хотя это больше организационный вопрос.


 
Style   (2003-03-17 12:38) [191]


>>1. Весь файл БД должен хранится в памяти ОЗУ.>
--Что подразумеваешь под словом БД???
Какую базу данных ты собрался применить
для данной задачи??

>>3. Непонятно зачем тебе нужны индексы? Ведь структура БД статична и все данные хранятся в строго определенных местах...
--Если речь идет о БД. то я их и не использую!
Я написал свой Swap посмотри:
www.sands.nm.ru/swaptable.zip
А индексы я хочу создать в нем чтобы быстро искать нужные значения. Это нужно для создания отчетов...

<<>>>Работать будем на 98
Можно поставить и WinNT.
Только нужно добится от него соответсвующих Привелегий для работы с ISA! Наверное с NT будет несколько надежней.



 
Andrey   (2003-03-17 13:37) [192]

>Style
>Что подразумеваешь под словом БД???
Пардон, неуточнил. В данном конкретном случае под БД я понимаю файл с данными структурированый особым образом.
Тоесть просто файл данные в котором хранятся в твоем формате.

Насколько я понял. Во всех таблицах будет строго определенное количество полей и записей. Тоесть каждая таблица по сути фиксированая матрица. В главной таблице 10000 записей. По заполнении таблици происходит переход на первую запись и на место первой пишется 10001 запись, на 2 пишется 10002 и т.д.
Поправь меня если я нетак понял.


Посмотрел swaptable.zip... хм... почти беру свои слова назад о квалификации. Но IMHO всетаки настолько серьезными проэктами должны заниматся более опытные люди. Опытные не в области физики, а именно в области написания ПО для RealTime работы.

swaptable это почти то о чем я говорил, но я предпологаю что изначально проще сделать фиксированое количество записей в таблицах. Насколько я понял >10000 в главной таблице непонадобится. Хотя конечно если должен быть не фиксированый размер, то твой swaptable (после некоторого тестирования и доводки) вполне удовлетворит такие требования. Я глубоко не вглядывался, но на первый взгляд вполне качественно IMHO

>Да и еще вопрос? Наверное лучше создавать Индекс в виде
>Бинарного дерева. Как вы думаете стоит ли его хранить в
>оперативной памяти
Лучше. Для эксперемента можно попробовать через Move сместить на 1 байт 10Mb-ный сегмент. Именно так и работает TList.
Но заморочаешся при вставке/изменении/удалении записей. Работа с деревьями никогда небыла простой. Теперь стоит ли его хранить в оперативной памяти? Если объем памяти позволяет то стоит, если не полностью то хотябы верхние страници верхних уровней.


 
Satirus   (2003-03-17 13:42) [193]

предлагаю перенести эту ветку назад в "Базы данных".
Как грицца, потрепались и хватить.


 
Style   (2003-03-17 13:55) [194]

Andrey © >> Спасибо наконец за теплые слова.. Я конечно не проффи. Но кое-что делать могу :)
Да в моем случае будет строго фиксированный размер и строго фиксированное кол-во записей..

Сам SwapTable можно описать так

Через каждую запись стоит некий Separator
Соответственно при чтени данных CheckSeparator если байт не равен нужному выдаем Exception о поврежденнии Swap!

Структура записей такая

1. Состояние
2. Предыдущая удаленная
3. Seek следующей записи
4. Seek текущей записи
5. Seek предыдущей записи

сооветственно можно легко воостановить поврежденные данные!

Допустим своп содержит 10000 записей.. то сколько бы я неудалял их. Новые записи он будет вставлять на место удаленных. Соответственно файл не будет расти если не превысить 10000 строк.

Что касается Real-Time программ.
Программа постоянно посылает импульсы на аппаратное устройство.
Если компьютер повис. то устройство включает тревогу через N - установленное время..

Еще немного про SwapTable..
Конечно наверное я еще добавлю свойство у каждому полю... IndexType -
0 - NoIndex
1 - RamIndex
2 - FileIndex

Если не получится с деревьями попробую хотябы дехометрический поиск.. (Я начал делать TMemIndex)

Если будут индексы можно будет написать даже свой интепретатор SQL :)

Соответсвенно желательно сделать компонент TDataSet"ом

А что касается всех моих опытов с Парадоксом . 8) Да выбора у меня не было.. Я просто объснить нормально немогу а меня грязью залили всем форумом!


 
Style   (2003-03-17 13:58) [195]

>> Предлагаю создать новую ветку TSwapTable :)


 
Style   (2003-03-17 14:23) [196]

Может еще чего посоветуете :) А то мы с такими темпами до 200 не дойдем :)))


 
Andrey   (2003-03-17 14:48) [197]

>А что касается всех моих опытов с Парадоксом
:) между прочим (сейчас скажу непроверенную информацию) в некоторых банках в качестве СУБД используется тотже Paradox или DBase исключительно из соображений надежности :) А архитектура такова: несколько самописных модулей на С (отлаженых до предела) для высокоскоростной работы с индексами и таблицами (нижний, физический уровень), большое количесво процедур работающих через эти функции с основной базой (средний, логический уровень), и машина (группа машин) принимающих сигналы (имя процедуры с параметрами) от удаленных филиалов (верхний, интерфейсный уровень)... Это все очень приближенно... так, что-то я отвлекся :)

>....можно легко воостановить поврежденные данные!
Мне пока неочень понятно как можно будет легко востановить данные. Даже если понеряется всего 1 запись, она потеряется окончательно. Предпологаю, отказатся от попыток востановить данные.
Так же для проверки целосности записи в заголовок записи можно внести некую контрольную сумму и при чтении проверять. IMHO это более надежный способ чем CheckSeparator.


> Допустим своп содержит 10000 записей.. то сколько бы я неудалял
> их. Новые записи он будет вставлять на место удаленных.
> Соответственно файл не будет расти если не превысить 10000
> строк.

Тоесть теоретически он может перерости 10000. значит
1. в памяти нужно держать индексы
2. при изменении/добавлении/удалении данных

2.1 считывать изменяемые страници с данными
2.2 изменять данные в таблицах и индексах
2.3 записывать данные на диск (наиболее критические сбои происходят в этот момент)
2.3.1 в заголовок БД записать условный идентификатор обозначающий, что "транзакция #<такой-то> собирается изменить такие-то записи в таких-то таблицах"
2.3.2 поочередно сбрасывать на диск измененные страници (в заголовке записи (и в таблице и в индексе) должен быть идентификатор транцакции которая изменяла эту запись последней)
2.4 Закончена обработка, жду сигнала для перехода на 2.1

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


 
Style   (2003-03-17 15:26) [198]

>>>IMHO это более надежный способ чем CheckSeparator>>
Можно действительно ввести контрольную сумму. Но сумирование займет тоже определенное время чего бы не хотелось.

Наверное достаточно будет CheckSeparator. Хотя контрольную сумму на для RecordHeader можно поставить.

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

Наверное лучше написать процедуру Restore которую в случае необходимости пользователь будет вызывать. Сделать пункт Восстановление БД вывести список сомнительных записей...

Сейчас есть TList -> SeeksList - в котором я храню структуры TRecordHeader. Но паралельно хотелось бы создать и индексы Значений.
Ну это всеже будет лучше чем использовать какую-нибудь БД! Это будет быстрее! Да и информацию в своем формате будет проще восстановить!


 
Soft   (2003-03-17 15:28) [199]

>Access и ядерная безопасность.... мда...
Soft, вы никогда не видели в Ваших программах в Access приколов, когда в вычисляемых полях, где использовались только встроенные функции Access, вместо результата выдается #Ошибка? или #Имя?, если закрыть базу, потом опять открыть - все ОК? Или перестают работать запросы, с которыми было все ОК, и лечится все вышеописанным способом? Благо, база просто для облегчения труда нескольких людей, и в случае чего-нить нехорошего миру ничего не угрожает...

Программа моя занимается тестированием узлов вычислительной сети (обширной, несколько регионов), обычным пингом, тоесть канал есть или нет. Да она виснет с периодичностью в неделю непрерывной работы, но я уже нашел как эту проблему обойти.

А друг занимается автоматизацие рассылки почты. Так что используйте ICQ и email, надежная доставка информации:)


 
Andrey   (2003-03-17 16:02) [200]


> Можно действительно ввести контрольную сумму. Но сумирование
> займет тоже определенное время чего бы не хотелось.

В сравнении с операцией чтения/записи это меньше чем пустяк. Я вообще предпологаю, что для тоего проэкта работа с диском будет занимать ~95% всего времени обработки цикла.
Кстати по поводу времени. Есть такие хитрые IDE-контроллеры которые чтение/запись берут на себя, а не нагружают процессор. Это есть очень гуд т.к. если планируется, что в будущем алгоритмы работы с данными усложнятся (например захочешь хранить записи в упакованом виде) это даст определенный резерв скорости процессорам. Всеравно быстрее чтения/записи ничего неполучится.


> Наверное лучше написать процедуру Restore которую в случае
> необходимости пользователь будет вызывать. Сделать пункт
> Восстановление БД вывести список сомнительных записей...

Вот в упор непонимаю как пользователь будет их востанавливать? Где он возьмет утерянные данные. В том же IB есть понятие версионности с которым можно еще как-то работать (запись имеет несколько версий), но как здесь, одна версия записи и она или верная или не верная, все!



> хотелось бы создать и индексы Значений

Если этого требует задача (т.к. предпологаются отчеты скорее всего требует), значит надо, если не требует нет смысла загромождать проэкт (чем меньше проэкт, тем легче в нем ориентироватся и искать баги).
Хотя конечно ради чисто академического интереса можно, но IMHO не в этом проэкте :) А если такое уже будет, можно будет подумать про организацию собственной СУБД поддерживающей SQL :) Глядишь еще и Oracle с рынка выбьешь :)


> Ну это всеже будет лучше чем использовать какую-нибудь БД!
> Это будет быстрее! Да и информацию в своем формате будет
> проще восстановить!

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


>Satirus (17.03.03 13:42)
Может быть и пора.


 
Style   (2003-03-17 16:23) [201]

>>Andrey-
поздравляем вас вы 200 посетитель нашего сайта :))

ладно к делу..

Вот в упор непонимаю как пользователь будет их востанавливать?
// Ну что касается восстановления самих данных. С этим конечно сложно... Т.е. либо запись есть или ее нет! Он ее просто пропускает. Главное воссоздать их последовательность. Хотя если делать компонент, то стоит включить опцию
BuildCheckSum -> Для повышения надежности.

Хотя для моей задачи впринципе это не существеннно. Достаточно будет и пропустить несколько записей.

Хотя у меня теперь будет время и на формирования BackUp!


>>>Кстати по поводу времени. Есть такие хитрые IDE-контроллеры которые чтение/запись берут на себя, а не нагружают процессор.
-- Вот это интересно можно по подробнее

>> Выбить с рынка Oracle :)))
Ну вообще даже если в него и встроить SQL скорее это будет всеж не БД а Swap with Query Interface!
Но сам компонент будет полезен для создания маленьких Локальных БД. Можно хранить там что душе угодно! Вплоть до самих компонентов Delphi с последующим Динамическим воссозданием :)


 
Andrey   (2003-03-17 16:51) [202]

Про IDE. Я эти особо не интересовался но вот пошарил по архивам и нашел кой чего. Вот тут посмотри:
http://www.derstein.ru/good/good_8.html
http://search-news.rambler.ru/ixSearch-cgi/ferra_search?words=BUSMaster
И еще есть утилита disksped.exe Она скорость работы с диском определяет. У меня есть, могу выслать.


>Достаточно будет и пропустить несколько записей
Вот и правильно. Самое простое решение, если потеря данных не критична.


> у меня теперь будет время и на формирования BackUp!

Конечно время будет, но нужно ли это. Перегружать проэкт лишними сервисами нестОит.


> Но сам компонент будет полезен для создания маленьких Локальных
> БД

Уверен, что так и будет. А если появятся компоненты работающие с Paradox и DBase и оформленные как TDataSet, это будет замечательная альтернатива BDE.


 
Style   (2003-03-18 11:16) [203]

Andrey © >> Спасибо за инфу..

Вчера немного думал о использовании своп в Сети..
Навреное понадобится сделать сетевой просмотр информации хранящейся в файле... С записью в один своп через сеть будет сложнее ну и наверное не к чему.
В принципе если открывать файл свопа так fmOpenReadWrite or fmShareDenyWrite то просмотр свопа будет доступен из сети.
Только нужно будет создавать еще один файл (как это делает Paradox) в котором нужно записывать какие произошли изменения. Дабы на другой рабочей станции изменить структуру свопа в оперативной памяти.



Страницы: 1 2 3 4 5 6 вся ветка

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

Наверх





Память: 1.16 MB
Время: 0.012 c
14-6742
race1
2003-03-15 13:19
2003.04.03
(pascal & GUI):=True


14-6771
RelakS
2003-03-16 19:33
2003.04.03
Как уменьшить размер ехе-файла


4-6853
Павел
2003-02-03 07:50
2003.04.03
Как не свернуться ?


14-6692
Карлсон
2003-03-17 18:45
2003.04.03
мечта идиота :)


14-6725
cok
2003-03-15 16:50
2003.04.03
Пароли





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский