Работа с БД (в общем)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Flo
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.03.2004 (Вт) 16:43
Откуда: Таллинн, Эстония

Работа с БД (в общем)

Сообщение Flo » 31.03.2004 (Ср) 12:45

Здравствуйте, уважаемые!
Пишу я сейчас приложение для работы с БД (.mdb,DAO). И вот в связи с недостатком опыта и практики терзают меня вопросы и сомнения по поводу БД. Точнее говоря, по поводу их размера. Сейчас они почти пустые и все работает прекрасно. Но ежедневно в различных таблицах будет появляться по 1000-1500 записей и как тогда будут через полгодика работать многочисленные запросы? Сколько вообще потребуется времени для обработки SQL-запроса, например, выбирающего отдельную запись? А если в запросе, к примеру, суммирование?
А сколько оперативной памяти и времени тоже уйдет на .OpenDatabase? А если объектов Data на форме не один?
Может данные разбивать на текущие (к примеру последний месяц) и архивные (раньше). Тогда как лучше разбивать? В разные .mdb или делать дубликат части таблиц внутри одной .mdb?
Короче, примерно такие вопросы и тема для обсуждения. Может быть кто-то сможет поделиться опытом и мыслями на эту тему, если несложно :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.03.2004 (Ср) 13:08

Лучше понемногу переходи на ADO. Тогда при необходимости ты сможешь довольно прозрачно перейти на MS SQL Server (или его бесплатную десктопную версию).

А пока... Ну SQL будет работать довольно быстро, даже с приличными размерами, но MDB не подходит для больших объемов. У меня была как-то база метров под 150-200, крутилась относительно нормально, но при таких объемах данных имеет смысл задуматься над переходом на СУБД.

Если будешь разбивать данные, то лучше храни данные в разных MDB.
Lasciate ogni speranza, voi ch'entrate.

Flo
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.03.2004 (Вт) 16:43
Откуда: Таллинн, Эстония

Сообщение Flo » 31.03.2004 (Ср) 13:47

Спасибо большое за советы. А можно чуть подробнее - что есть большие объемы? Размер .mdb большой? Это со скольки приблизительно?
Вот у меня в .mdb 16 таблиц - это много?
Часть таблиц содержит данные о работе, часть - обслуживающие, типа классификаторов (ну, клиенты там всякие, виды сырья и т.п.). Если в последующем разбивать данные о работе на текущие и архивные и хранить их в разных .mdb, так может и обслуживающие в отдельную .mdb выделить и присоединять ее по мере необходимости куда надо? А проблемм с такими соединениями я себе не наживу больших? Как-то так делать еще не приходилось...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.03.2004 (Ср) 14:35

Классификаторы лучше дублировать (если, конечно, они не занимают слишком солидный объем). А размер базы - это такое понятие, про которое цифрами не скажет. Все зависит от того, какая используется машина. Если объем данных не превысит 50-100 Мб, то можно оставаться на MDB. Но в любом случае имеются следующие спецификации формата:

Спецификации Microsoft Access
Спецификации базы данных Microsoft Access
База данных Microsoft Access

Атрибут Максимальное значение
Размер файла базы данных Microsoft Access (.mdb) 2 Гбайт за вычетом места, необходимого системным объектам.
Число объектов в базе данных 32 768
Модули (включая формы и отчеты, свойство Наличие модуля (HasModule) которых имеет значение True) 1 000
Число знаков в имени объекта 64
Число знаков в пароле 14
Число знаков в имени пользователя или имени группы 20
Число одновременно работающих пользователей 255

Таблица

Атрибут Максимальное значение
Число знаков в имени таблицы 64
Число знаков в имени поля 64
Число полей в таблице 255
Число открытых таблиц 2048 (фактическое число может быть меньше из-за внутренних таблиц, открываемых Microsoft Access)
Размер таблицы 2 Гбайт за вычетом места, необходимого системным объектам.
Число знаков в текстовом поле 255
Число знаков в поле MEMO 65 535 при вводе данных через интерфейс пользователя;
1 Гбайт для хранения знаков при программном вводе данных.
Размер поля объекта OLE 1 Гбайт
Число индексов в таблице 32
Число полей в индексе 10
Число знаков в сообщении об ошибке 255
Число знаков в условии на значение записи 2 048
Число знаков в описании таблицы или поля 255
Число знаков в записи (кроме полей MEMO и полей объектов OLE) 2 000
Число знаков в значении свойства поля 255

Запрос

Атрибут Максимальное значение
Число установленных связей 32 на одну таблицу за вычетом числа индексов, находящихся в таблице для полей или сочетаний полей, не участвующих в связях
Число таблиц в запросе 32
Число полей в наборе записей 255
Размер набора записей 1 Гбайт
Предел сортировки 255 знаков в одном или нескольких полях
Число уровней вложения запросов 50
Число знаков в ячейке на бланке запроса 1 024
Число знаков для параметра в запросе с параметрами 255
Число операторов AND в предложении WHERE или HAVING 99
Число знаков в инструкции SQL приблизительно 64 000

Форма и отчет

Атрибут Максимальное значение
Число знаков в надписи 2 048
Число знаков в поле 65 535
Ширина формы или отчета 22 дюйма (55,87 см)
Высота раздела 22 дюйма (55,87 см)
Высота всех разделов плюс заголовки разделов (в режиме конструктора) 200 дюймов (508 см)
Число уровней вложения форм или отчетов 7
Число полей или выражений, которые можно отсортировать или сгруппировать в отчете 10
Число заголовков и примечаний в отчете 1 заголовок/примечание отчета; 1 заголовок/примечание страницы; 10 заголовков/примечаний групп
Число печатных страниц в отчете 65 536
Число элементов управления и разделов, которые можно добавить за время существования формы или отчета 754
Число знаков в инструкции SQL, работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба .mdb и .adp) 32 750

Макрос

Атрибут Максимальное значение
Число макрокоманд в макросе 999
Число знаков в условии 255
Число знаков в комментарии 255
Число знаков в аргументе макрокоманды 255


Спецификации проекта Microsoft Access
Проект Microsoft Access

Атрибут Максимальное значение
Число объектов в проекте Microsoft Access (.adp) 32 768
Модули (включая формы и отчеты, свойство Наличие модуля (HasModule) которых имеет значение True) 1 000
Число знаков в имени объекта 64
Число столбцов в таблице 250 (Microsoft SQL Server 6.5)
1024 (Microsoft SQL Server 7.0 и 2000)


База данных Microsoft SQL Server

Спецификации максимальной емкости Microsoft SQL Server описаны в документации к Microsoft SQL Server. Для получения дополнительных сведений посетите веб-узел разработчика Microsoft Developer Network.

Примечание. Гиперссылка этого раздела ведет в Интернет. Вы можете вернуться в справку в любой момент.

Форма и отчет

Атрибут Максимальное значение
Число знаков в надписи 2 048
Число знаков в поле 65 535
Ширина формы или отчета 22 дюйма (55,87 см)
Высота раздела 22 дюйма (55,87 см)
Высота всех разделов плюс заголовки разделов (в режиме конструктора) 200 дюймов (508 см)
Число уровней вложения форм или отчетов 7
Число полей или выражений, которые можно отсортировать или сгруппировать в отчете 10
Число заголовков и примечаний в отчете 1 заголовок/примечание отчета; 1 заголовок/примечание страницы; 10 заголовков/примечаний групп
Число печатных страниц в отчете 65 536
Число элементов управления и разделов, которые можно добавить за время существования формы или отчета 754
Число знаков в инструкции SQL, работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба .mdb и .adp) 32 750

Макрос

Атрибут Максимальное значение
Число макрокоманд в макросе 999
Число знаков в условии 255
Число знаков в комментарии 255
Число знаков в аргументе макрокоманды 255



Для тебя самое главное:
Размер файла - не более 2 Гб
Число объектов - не более 32768
Число полей - не более 255
Число открытых таблиц - не более 2048
Число таблиц в запросе - не более 32


Если тебе в дальнейшем понадобиться соединять данные из двух баз данных, то это будет возможно, хотя и не очень удобно.


Но в любом случае, советую по возможности все операции перевести на SQL, а с DAO переехать на ADO (мне DAO тоже нравится больше, но если нужна переносимость и масштабируемость, то он тут не очень подходит).
Lasciate ogni speranza, voi ch'entrate.

Flo
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.03.2004 (Вт) 16:43
Откуда: Таллинн, Эстония

Сообщение Flo » 31.03.2004 (Ср) 14:47

Вау! :o
Спасибо за информацию. О переходе подумаю, конечно. Но похоже на это проект хватит и DAO...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList