Есть необходимость организовать БД с большим количеством записей (20К-300К). Суть какова: есть какое-то событие, а в базе данных все блоки за год и это событие попадает в какой-то один из них (по дате и времени вычисляем). Сейчас эта база в файле excel и он очень "тяжелый", пока его откроешь, пока формулами проставит статус событий. Очень много времени занимает. Есть желание организовать так: макрос "собирает" запрос с исходными данными и отправляет на сервер с БД, сам сервер вычисляет и отправляет ответ и макрос обратно проставляет результат.
Так как опыта работы с БД (да и с excel и vba) очень мало не уверен, что правильно выбиру метод. Думаю сделать веб-сервер с SQL базой и с ней такое сделать.
Есть у кого-то опыт таких решений? Может кто знает, как проще всего это организовать или как организовать, что бы время запроса-ответа меньше всего времени занимало. Мне достаточно направления, почитаю литературу и думаю разберусь.
Спасибо.
P.S.: Надеюсь понятно объяснил задачу.
Есть необходимость организовать БД с большим количеством записей (20К-300К). Суть какова: есть какое-то событие, а в базе данных все блоки за год и это событие попадает в какой-то один из них (по дате и времени вычисляем). Сейчас эта база в файле excel и он очень "тяжелый", пока его откроешь, пока формулами проставит статус событий. Очень много времени занимает. Есть желание организовать так: макрос "собирает" запрос с исходными данными и отправляет на сервер с БД, сам сервер вычисляет и отправляет ответ и макрос обратно проставляет результат.
Так как опыта работы с БД (да и с excel и vba) очень мало не уверен, что правильно выбиру метод. Думаю сделать веб-сервер с SQL базой и с ней такое сделать.
Есть у кого-то опыт таких решений? Может кто знает, как проще всего это организовать или как организовать, что бы время запроса-ответа меньше всего времени занимало. Мне достаточно направления, почитаю литературу и думаю разберусь.
Формулы всегда сильно тормозят. При большом количестве записей от них лучше вообще отказаться. Например в пользу макросов. Кстати запросы не обязательно должны быть к базе. К листу ексел тоже можно
Цитата
пока формулами проставит статус событий
Формулы всегда сильно тормозят. При большом количестве записей от них лучше вообще отказаться. Например в пользу макросов. Кстати запросы не обязательно должны быть к базе. К листу ексел тоже можноalex77755
Это не так. Математические операторы, используемые в формулах, работают одинаково быстро, как в Excel, так и в VBA. Функции листа Excel - это код, написанный на языке программирования С и вызываемый непосредственно из ядра приложения, из динамических библиотек DLL, что делает функции листа на порядок более быстродействующими, чем код VBA написанный пользователем и выполняющий аналогичные вычисления
Это не так. Математические операторы, используемые в формулах, работают одинаково быстро, как в Excel, так и в VBA. Функции листа Excel - это код, написанный на языке программирования С и вызываемый непосредственно из ядра приложения, из динамических библиотек DLL, что делает функции листа на порядок более быстродействующими, чем код VBA написанный пользователем и выполняющий аналогичные вычисленияSerge_007
вы. наверное, будете смеяться. но при работе с данными оч.многое зависит как от самих данных, так и от способа их представления. кроме того - немаловажно, что именно и насколько часто мы с этими данными собираемся делать.
непонятно - что за формулы и нельзя ли облегчить их... непонятно - почему вы не пользуетесь другими инструментами Excel - к примеру, сводными, фильтрами... непонятно - почему вы не пользуетесь макросами в Excel... непонятно, слышали ли Вы о MS Query...
вы. наверное, будете смеяться. но при работе с данными оч.многое зависит как от самих данных, так и от способа их представления. кроме того - немаловажно, что именно и насколько часто мы с этими данными собираемся делать.
непонятно - что за формулы и нельзя ли облегчить их... непонятно - почему вы не пользуетесь другими инструментами Excel - к примеру, сводными, фильтрами... непонятно - почему вы не пользуетесь макросами в Excel... непонятно, слышали ли Вы о MS Query...
Возможно это из-за того, что я плохо знаю теорию. Но как-то заказывали написать пользовательскую функцию и прислали книгу где она должна работать. Я думал, что у меня зависла винда. Оказалось нет: просто книга открывалась около 40 минут. И примерно минут на 20 зависала при изменении любого значения на листе. Сказать, что там было много формул это ничего не сказать. В книге отчёт формировался формулами и пользователя это устраивало (успевал после внесения любого значения чайку попить и перекурить) Убедил удалить все формулы и формировать отчёт макросом. Результат: отчёт формировался за 8-10с. Я просто тогда не знал, что "функции листа на порядок более быстродействующие"
ИМХО
Цитата
Это не так
Возможно это из-за того, что я плохо знаю теорию. Но как-то заказывали написать пользовательскую функцию и прислали книгу где она должна работать. Я думал, что у меня зависла винда. Оказалось нет: просто книга открывалась около 40 минут. И примерно минут на 20 зависала при изменении любого значения на листе. Сказать, что там было много формул это ничего не сказать. В книге отчёт формировался формулами и пользователя это устраивало (успевал после внесения любого значения чайку попить и перекурить) Убедил удалить все формулы и формировать отчёт макросом. Результат: отчёт формировался за 8-10с. Я просто тогда не знал, что "функции листа на порядок более быстродействующие"
Правильно мыслит dadmarat Excel-это не место для хранения баз данных. За один год 100 к записей,за следующий еще+будет??? ,и.д. На стороне сервера выполняется процедура с расчетами и на выходе результат. Доступ к данным с любой точки.Главное оптимизировать процедуру . Если на локалке,то вебсервер не понадобится.
PS: dadmarat. Если надо написать процедуру,обращайтесь,помогу
Правильно мыслит dadmarat Excel-это не место для хранения баз данных. За один год 100 к записей,за следующий еще+будет??? ,и.д. На стороне сервера выполняется процедура с расчетами и на выходе результат. Доступ к данным с любой точки.Главное оптимизировать процедуру . Если на локалке,то вебсервер не понадобится.
PS: dadmarat. Если надо написать процедуру,обращайтесь,помогуdoober
отчёт формировался формулами и пользователя это устраивало (успевал после внесения любого значения чайку попить и перекурить) Убедил удалить все формулы и формировать отчёт макросом. Результат: отчёт формировался за 8-10с
функции листа на порядок более быстродействующими, чем код VBA написанный пользователем и выполняющий аналогичные вычисления
Если Вы, при написании кода, использовали иной алгоритм, чем пользователь, который написал формулу, то естественно сравнивать быстродействие разных алгоритмов бессмысленно Для того что бы убедиться, что функции листа быстрее аналогичных функций на VBA, достаточно написать свой аналог любой функции листа и сравнить скорость выполнения с оригиналом
[p.s.]У меня есть такой опыт: Надо было заполнить около ста файлов данными корпоративной БД для банка-партнера в их форме. Макрос уже был ими написан. Я посмотрел код - сплошные селекты и прочие "тормоза" (видимо писали в основном макрорекордером). Код выбирал из БД куски информации под каждый файл, обрабатывал эти куски по условиям, добавлял группировки, фильтрацию, подитоги по группам и много прочей лабуды. Запустил код на ночь и отработал он только к утру следующего дня. Ради интереса написал свой код, который создавал сводную таблицу из БД и разносил инфу по нужным файлам по условиям. Общее время выполнение составило МЕНЕЕ ОДНОГО ЧАСА, да и то, код не оптимальный был, потому что лень было его оптимизировать, задача-то разовая. Так что сравнивать надо осторожнее [/p.s.]
отчёт формировался формулами и пользователя это устраивало (успевал после внесения любого значения чайку попить и перекурить) Убедил удалить все формулы и формировать отчёт макросом. Результат: отчёт формировался за 8-10с
функции листа на порядок более быстродействующими, чем код VBA написанный пользователем и выполняющий аналогичные вычисления
Если Вы, при написании кода, использовали иной алгоритм, чем пользователь, который написал формулу, то естественно сравнивать быстродействие разных алгоритмов бессмысленно Для того что бы убедиться, что функции листа быстрее аналогичных функций на VBA, достаточно написать свой аналог любой функции листа и сравнить скорость выполнения с оригиналом
[p.s.]У меня есть такой опыт: Надо было заполнить около ста файлов данными корпоративной БД для банка-партнера в их форме. Макрос уже был ими написан. Я посмотрел код - сплошные селекты и прочие "тормоза" (видимо писали в основном макрорекордером). Код выбирал из БД куски информации под каждый файл, обрабатывал эти куски по условиям, добавлял группировки, фильтрацию, подитоги по группам и много прочей лабуды. Запустил код на ночь и отработал он только к утру следующего дня. Ради интереса написал свой код, который создавал сводную таблицу из БД и разносил инфу по нужным файлам по условиям. Общее время выполнение составило МЕНЕЕ ОДНОГО ЧАСА, да и то, код не оптимальный был, потому что лень было его оптимизировать, задача-то разовая. Так что сравнивать надо осторожнее [/p.s.]Serge_007
непонятно - что за формулы и нельзя ли облегчить их... непонятно - почему вы не пользуетесь другими инструментами Excel - к примеру, сводными, фильтрами... непонятно - почему вы не пользуетесь макросами в Excel... непонятно, слышали ли Вы о MS Query...
Возможно я мало знаю о этих инструментах, но первые два предполагают открытие файла с базой, но он открывается долго. MS Query не слышал, сегодня почитаю.
doober, скорее всего думаю рассматривать веб-сервер, так как пользователей будет 5-8 человек и доступ (для настройки и отладки, для начала, на локальному буду тестировать). Спасибо за предложение, если возникнут трудности обязательно обращусь.
Тему я и ставил в общем виде, для того что бы мне в общем и посоветовали, что можно сделать по такому или иному принципу, используя те или другие инструменты, в зависимости от конкретного случая. Если недостаточно информации, могу ответить на вопросы или рассказать конкретный случай.
непонятно - что за формулы и нельзя ли облегчить их... непонятно - почему вы не пользуетесь другими инструментами Excel - к примеру, сводными, фильтрами... непонятно - почему вы не пользуетесь макросами в Excel... непонятно, слышали ли Вы о MS Query...
Возможно я мало знаю о этих инструментах, но первые два предполагают открытие файла с базой, но он открывается долго. MS Query не слышал, сегодня почитаю.
doober, скорее всего думаю рассматривать веб-сервер, так как пользователей будет 5-8 человек и доступ (для настройки и отладки, для начала, на локальному буду тестировать). Спасибо за предложение, если возникнут трудности обязательно обращусь.
Тему я и ставил в общем виде, для того что бы мне в общем и посоветовали, что можно сделать по такому или иному принципу, используя те или другие инструменты, в зависимости от конкретного случая. Если недостаточно информации, могу ответить на вопросы или рассказать конкретный случай.dadmarat