Ru-Board.club
← Вернуться в раздел «Программы»

» CronosPlus & Cronos for DOS - сист. управления БД

Автор: TranzitZP
Дата сообщения: 03.05.2011 21:24
ну.... в ДРФО есть, но есть на трекере 2 варианта ДРФО - при желании есть над чем поработать.

Кроме этого есть личное творение - база http://dc.ru-board.com/details.php?id=57324 , в которой словарь я не создавал через отсутствие свободного времени (и так на создание убил 2 месяца). При желании, можно за счет словарей размер базы уменьшить с 6,5 Гб до 4 Гб.

Экцес самый оптимальный вариант для группировки одинаковых имен (и т.п.) и созхдания таким образом словаря, но менять их в Кроносе придется (каждое имя) на индексы самостоятельно групповой (или как она там называется) заменой.

Еще раз спасибо за консультации. Буду настраиваться на подвиг )))
Автор: ext2
Дата сообщения: 03.05.2011 21:34
TranzitZP

Цитата:
Кроме этого есть личное творение - база http://dc.ru-board.com/details.php?id=57324 , в которой словарь я не создавал через отсутствие свободного времени (и так на создание убил 2 месяца).

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

Цитата:
Экцес самый оптимальный вариант для группировки одинаковых имен (и т.п.) и созхдания таким образом словаря, но менять их в Кроносе придется (каждое имя) на индексы самостоятельно групповой (или как она там называется) заменой.

Вот это не понял, извините.
Автор: TranzitZP
Дата сообщения: 03.05.2011 22:52
Для начала необходимо экспортировать в Экцесс поле (к примеру Имя). Сделать в Экцесс запрос на все существующие данные (*) этого поля "Имя" с включенной функцией "группировка" одинаковых данных. Будет создан список из всех имеющихся имен - список без повторений каждого имени. Этот список копируем. Потом вдальнеёшем импортируем в словарь Кроноса.
Заходим в команду "Массовая коррекция" и в поле Имя на каждое имя вручную вводим задачу на замену каждого имени на соответствующий номер в словаре. Сколько будет в словаре имен - столько раз нужно будет запускать замену с имени на номер.


В итоге получаем:
более 30 тыс.имен
более 300 тыс.фамилий
более 50 тыс. отчеств




Автор: ext2
Дата сообщения: 03.05.2011 23:17
TranzitZP
Снова не понял что вы делаете и зачем такие сложности
Вообще-то, Access, при создании базы, создает ключевое поле с идущими последовательно числовыми значениями. Именно они и будут вашими полями "код" в словаре, а полями "понятие" будут соответственно фамилии, имена, отчества. Это если они у вас в отдельных полях.
Кстати, в "Массовой коррекции" есть параметр "Массовая замена" по значениям, выбираемым из файла. Его тоже можно использовать.
Автор: TranzitZP
Дата сообщения: 03.05.2011 23:20
Кстати, перед тем как прочитать Ваше ссобщение, в Кроносе заметил пункт Массовая замена.

Оказывается не всё так сложно, как казалось. Теперь точно займусь доделкой базы.

Можно спокойно ложиться спать. Чего и Вам желаю )))
Автор: ext2
Дата сообщения: 03.05.2011 23:29
TranzitZP

Цитата:
Оказывается не всё так сложно, как казалось.

Век живи - век учись Рад, что смог помочь.
Автор: KONKAR
Дата сообщения: 04.05.2011 12:03
TranzitZP
ext2
Как вариант
1. создаем новую базу из одного поля
2. создаем таблицы обмена, так чтобы поле, которое надо превратить в словарь, было единственным, участвующем в обмене
3. Создаем идентифицирующий набор, устанавливаем "Слияние при идентификации"
4. Проводим обмен, получаем набор "понятие"
5. Выгружаем в текст, затем всасываем текст в Аксесс с "ключом", и снова выгружаем в текст с каким-либо разделителем (главное, чтобы при массовой замене он совпадал)
6. Полученный mdb всасываем в Кронос и назначаем словарем
7. проводим массовую замену с помощью текстового файла.
8. подключаем словарь
9. Удаляем все промежуточные базы и файлы
Автор: soloveika
Дата сообщения: 04.05.2011 13:19
KONKAR

Цитата:
5. Выгружаем в текст, затем всасываем текст в Аксесс с "ключом"

Зачем?
В кроносе создать поле код и автоматически его заполнить. Допустим значение := номер записи. Если отсчет начинается не с 1, то формулой значение привести к нужному.
Автор: TranzitZP
Дата сообщения: 04.05.2011 14:06
Спасибо, начал уже над этим работать и столкнулся с таким вопросом:
- при создании запроса (в т.ч. сложного запроса) в словарном поле, не возможно указать условие для поиска к примеру "алекс*", чтобы Кронос сделал выборку всех имен начинающихся не алекс: александр, александра, алексей .... ,
автоматически открывается словарь и можно только выбрать конкретное имя или диапазон (в сложном запросе).
В обычном текстовом поле таких проблем нет, можно использовать знаки "?", "*" и т.п. для расширения результата поиска.

Я прав? или где-то я не нашел нужную функцию как делать выборку в словарном поле?
Заранее спасибо за ответы.
Автор: ext2
Дата сообщения: 04.05.2011 15:36
TranzitZP
Словарь он на то и словарь, чтобы каждому коду соответствовало конкретное понятие (или несколько понятий, если поле множественное). В словаре отбирать можно только по значениям самого словаря или (в сложном запросе) по значениям, которых нет в словаре, если у вас таковые имеются в словарном поле
Автор: TranzitZP
Дата сообщения: 04.05.2011 16:32
Ясно. Получается, что лучше вобще не создавать словарь в полях, по которым будет происходить поиск.
Проще же в поле указать фамилию Кр?вец и найти: Кравец, Кровец
чем в словарном поле в сложном запросе указывать поиск Кровец и Кравец, и вспоминать какие еще могут быть опечатки в базе или разновидности фамилии.

А счастье было так близко
Автор: ext2
Дата сообщения: 04.05.2011 16:42
TranzitZP
Словарь лучше всего создавать в максимально "чистой" базе, без ошибок хотя бы в поле, которое должно быть словарным.
Автор: soloveika
Дата сообщения: 04.05.2011 17:52
TranzitZP

Цитата:
Получается, что лучше вобще не создавать словарь в полях

Место экономите при помощи словарей? ЖД вроде не дорогие сейчас.
Я наоборот стараюсь от словарей отвязаться, бывает теряются или при копировании сопоставление полей пропадает. А текст он и есть текст.
Автор: KONKAR
Дата сообщения: 04.05.2011 18:29
soloveika
Как вариант.
Автор: ww1ww
Дата сообщения: 04.05.2011 22:43
Вообще странно закатывать в словарь фамилии
улицы, города, организации - это понять можно, но фамилии
Если вы пользуетесь банком только для поиска мой вам совет упростите все до одной таблицы-самой простой
Если сами ведете базу, тут уж...
Автор: ext2
Дата сообщения: 04.05.2011 22:46
ww1ww
Есть базы, которые нельзя упростить, ДРФО тому пример.
Автор: KONKAR
Дата сообщения: 05.05.2011 06:21
ww1ww
Словари на ФИО (чаще на ИО) делают, чтобы
1.избежать опечаток при вводе (барышни, которые набивают информацию, делают ошибки даже в распространенных ФИО, что говорить об иностранных. В одной серьезной организации ввод осуществляется двумя операторами и запись происходит только при совпадении)
2. Чтобы уменьшить объем базы (на то они и называются реляционными)
Первое, конечно, намного важнее. Второе же, как правильно заметил soloveika, при нынешней цене на ЖД - элемент изящества, но куда ж без красоты....
Автор: Leo66
Дата сообщения: 05.05.2011 06:47
ext2
Упростить можно любую базу.
TranzitZP
Словари используют для ввода данных, KONKAR по 1 пункту прав.
Для уменьшения размера пересмотрите остальные данные в других полях.
KONKAR
Кронос не является реляционной базой и правила на него не распространяются.
Автор: ww1ww
Дата сообщения: 05.05.2011 07:53
Все правы , однако напомню
уважаемый TranzitZP не собирается базу данных вести, то есть заполнять данными с помощью своих пользователей, человек пробует различные варианты обработки именно готовых данных:
"...В итоге получаем:
более 30 тыс.имен
более 300 тыс.фамилий
более 50 тыс. отчеств ..."
видимо подкупает автопоиск при наборе данных из словаря.
Эта возможность хороша когда словарь маленький. Если у тебя больше 50 понятий, то всё равно будешь набирать почти целое слово. Владимир , Владислав , ... Проще научить пользователя набирать слова
Автор: Provok
Дата сообщения: 05.05.2011 08:27
Не вижу ничего страшного в словаре фамилий. В сложном запросе вызываешь словарь, делаешь по нему поиск и все полученные значения автоматом вставляешь в запрос через "или".
А при вводе даже если значений очень много и нет выпадающего списка - вводишь, например, "ив*" и если такое значение единственное - оно сразу вставляется из словаря, а если нет - то открывается окно со всеми подходящими результатами - аналог автопоиска.
Автор: KONKAR
Дата сообщения: 05.05.2011 08:45
ww1ww
Не могу с Вами согласиться. Словари при вводе нужны не столько для сокращения времени, сколько для снижения количества ошибок Изумительная функция словарей кроноса - автоматическое добавление понятий - при появлении слова, отсутствующего в словаре, переспрашивает и заставляет вводящего проверять себя.
А вообще абсолютной истины не бывает. Если с базой будет работать несколько квалифицированных специалистов, то можно делать и так и эдак, если же квалификация персонала низка, то лучше минимизировать вероятность ошибки при вводе и, соответственно вероятность пропуска при поиске.
Leo66
Не могу похвастаться хорошей теоретической подготовкой, для меня реляционными являются любые базы, позволяющие связывать таблицы между собой. Если эта функция называется как-то по другому - подскажите
Автор: neo_matryx
Дата сообщения: 05.05.2011 10:32
KONKAR

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

пардон, что вставлю 5 копеек.
У кро все-таки больше объектная модель, т.е. нереляционная.
Вот современные реляционные с их функционалом за уши можно притянуть в сторону объектно-ориентированных, а вот наоборот вряд ли.
Автор: permdetekti
Дата сообщения: 05.05.2011 10:35
KONKAR

"- при создании запроса (в т.ч. сложного запроса) в словарном поле, не возможно указать условие для поиска к примеру "алекс*", чтобы Кронос сделал выборку всех имен начинающихся не алекс: александр, александра, алексей .... ,
автоматически открывается словарь и можно только выбрать конкретное имя или диапазон (в сложном запросе).
В обычном текстовом поле таких проблем нет, можно использовать знаки "?", "*" и т.п. для расширения результата поиска. ."

Уважаемый коллега, однажды мне пришлось решать схожую по типу задачу (в объеме "Дела Шурмана", укравшего у Сбербанка 250 лимонов). Когда совсем приперло, я (в переложении на Ваш случай) продублировал в базе необходимые поля и поместил туда раскодированные значения, по которым было необходимо провести контекстный поиск. Все получилось (результат тому подтверждение, правда честности ради, должен заметить, что моя функция заключалась не сколько в поиске истины, а сколько в отсеве неверных версий). Рекомендую.
P.S. Флуд, конечно, но ...
До сих пор терзают сомнения, какой знак поставить в конце словосочетания "Правильно сделал", применительно к поступку Шурмана: вопросительный или восклицательный. Равно как и необходимость употребление перед словосочетанием "Не..." или "Не, ..." ... (еще раз извиняюсь за флуд).
Автор: KONKAR
Дата сообщения: 05.05.2011 11:45
permdetekti
Вы лишний раз подтвердили мой тезис, что абсолюта не бывает, выбор структуры зависит от задачи
Автор: ext2
Дата сообщения: 05.05.2011 12:12
Leo66

Цитата:
Упростить можно любую базу.

Если очень захотеть, то можно в космос улететь! Вот только зачем?

KONKAR

Цитата:
Словари при вводе нужны не столько для сокращения времени, сколько для снижения количества ошибок

Абсолютно с вами согласен, знаю это на собственном опыте.
Автор: Leo66
Дата сообщения: 05.05.2011 13:23
ext2
Я позволил себе усомниться в Вашем высказывании
Цитата:
Есть базы, которые нельзя упростить, ДРФО тому пример.
. Вопрос "зачем", вопрос вторичный.
Автор: TranzitZP
Дата сообщения: 05.05.2011 13:26
Не думал, что моя проблема породит такую полемику.
В результате моих практических усилий на базой в 7 ГБ получил я такие результаты:

Вопрос перевода словарного поля (словарь примерно на 300 тысяч понятий) в текстовое поле (база примерно на 30 млн строк) функцией "массовой замены" в базе нумерации этих понятий текстовыми значениями (самими понятиями) остался разрешенным только теоретически. На практике это воплотить не удалось в связи с большими размерами базы, а именно (на примере словарного поля Фамилия, которое переведено в текстовое и проиндексировано):

Вариант 1: сделать выборку поля Фамилия на определенный код фамилии, который есть в словаре.
Результат: выборка происходит мгновенно, массовая замена в поле Фамилия данного кода фамилией гражданина происходит за считанные секунды (при условии, что в текстовом файле правила для замены указана только одна фамилия и её код).
Вывод: использовать такой врианет не практично, так как нужно делать последовательно 300 тыс. выборок и подготавливать под них файл-правило.

Вариант 2 (экспериментальный): сделать выборку всех имеющихся в базе записей (30 млн.) и использовать для массовой замены текстовый файл правила для замены с одной фамилией и соответствующим её кодом)
Результат: массовая замена уже не происходит за считанные секунды, так как Кронос для поиска нужного кода фамилиии в поле не использует данные индексации и ищет нужный код путем перебора всез 30 млн. записей. В результате замена одной фамилии занимает около 10 минут времени (компьютер достаточно мощный).

Вариант 3 (безумный): сделать выборку всех имеющихся в базе записей (30 млн.) и использовать для массовой замены текстовый файл правила для замены со всеми имеющимися фамилиями и их кодами)
Результат: массовая замена не происходит, Кронос виснит. Теоретически для замены необходимо примерно 6 лет беспрерывной работы компьютера (10 минут на замену 1 фамилии умножить на 300 тысяч фамилий равно 3 млн.минут или примерно 2000 дней).

Еще раз спасибо за оказанную помощь. Буду в дальнейшем еще порождать безумные идеи.
Автор: ext2
Дата сообщения: 05.05.2011 14:51
Leo66
Не надо сомневаться. Если есть конкретные предложения - милости просим, а так это все...слова

TranzitZP

Цитата:
Не думал, что моя проблема породит такую полемику.

Полемика возникла из-за того, что вы не предоставили ни единого скриншота того, что вы делаете, в связи с чем так и осталось непонятным до конца чего хотите добиться.
Автор: TranzitZP
Дата сообщения: 05.05.2011 16:43
ext2, изначально хотел в готовой большой базе создать словарь из имеющихся записей - оказалось не практичным, так как неудобства возникают при выборке (поиске).

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

Сейчас столкнулся еще с одним сюрпризом:
Размер всей базы: примерно 12 ГБ;
Была мной когда-то сжата WinRAR`ом (для удобства транспортировки и раздачи) на максимальном уровне до 2,6 ГБ

Сейчас из этой базы удалил 4 поля и сделал оптимизацию банка данных (с включенными функциями: "оптимизация поля в записях" и "сжимать"):
Размер всей базы уменьшился и составил 7 ГБ;
При сжати WinRAR`ом на максимальном уровне размер архива составляет почему-то 5 ГБ.
Сжатие с помощью 7z также дает такие же результаты.

Вот такие результаты оптимизации...
Автор: ext2
Дата сообщения: 05.05.2011 17:48
TranzitZP

Цитата:
Сейчас из этой базы удалил 4 поля и сделал оптимизацию банка данных (с включенными функциями: "оптимизация поля в записях" и "сжимать"):
Размер всей базы уменьшился и составил 7 ГБ;
При сжати WinRAR`ом на максимальном уровне размер архива составляет почему-то 5 ГБ.

Именно потому и составляет 5 Гб, потому что отметили при оптимизации "сжимать". При этом Кронос использует свои внутренние алгоритмы компрессии данных (некий аналог lzma), после которых Winrar уже практически ничего не сжимает.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253

Предыдущая тема: Mozilla Firefox! (часть 10)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.