Страница: 1 |
Страница: 1 |
Вопрос: Выбор БД
Добавлено: 10.03.10 14:34
Автор вопроса: turBO | Web-сайт:
Помогите выбрать Базу данных.
Данные будут храниться в нескольких таблицах, предполагается несколько 10-в тыс. записей. Одна из таблиц будет состоять из около 1024 колонок (MS Access отпадает). База клиентская, т.е. на той же машине. Очень желательна поддержка ODBC. И главное - бесплатность.
P.S. Разработка ведется на VB.Net.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 10.03.10 15:23
MySQL
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 10.03.10 18:45
SQL Server Express
SQL Server CE
Можешь рассказать, зачем в таблице нужно аж 1024 колонки???
Номер ответа: 3
Автор ответа:
turBO
ICQ: 451232820
Вопросов: 9
Ответов: 13
Web-сайт:
Профиль | | #3
Добавлено: 10.03.10 22:05
Я сам являюсь сторонником того, что таблицы с >100 полями - маразм, но задача нетривиальная. Имеется около 1000 параметров, названия полей не знаем и создаём поля по ходу получения новых параметров. Пользователь будет выбирать по названию нужные ему параметры и получать выгрузки.
SQL Server Express вроде серверный, а планируется распространение программы в виде дистрибутива без каких либо доустановок и настроек!
А как насчёт FireBird Embedded?
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 10.03.10 22:19
SQL Server Express может использоваться в клиентских сценариях.
SQL Server CE больше подходит для клиентских программ, его можно использовать даже без установки, и размер рантайма очень маленький (несколько мегабайт).
Эта задача решается проше, и без таблицы с 1000 столбцами,
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 11.03.10 11:25
SQLite?
Если вы не знаете названия параметров, следует использовать не DDL, а DML, т.е. создать таблицу parameter_name, parameter_value и добавлять туда строки вместо колонок.
Номер ответа: 6
Автор ответа:
turBO
ICQ: 451232820
Вопросов: 9
Ответов: 13
Web-сайт:
Профиль | | #6
Добавлено: 12.03.10 01:17
Sharp, был такой вариант. Если при DDL было бы 800 записей, то в случае DML получится 800х1000=800000 записей! И можно ли выгрузить список ID-записей, в которых, скажем параметры V7=0 AND V24=1 AND V61=1?
Структура в случае DML:
ID Param Value
1 V1 1
1 V2 0
.. .. ..
n V1000 1
ID=1...n
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 12.03.10 13:52
800к записей это ерунда, тем более что весить они будут столько же.
Пример запроса:
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 12.03.10 15:44
Если у тебя набор столбцов стандартный, то есть смысл делать как ты хочшеь (1000 столбцов).
Если же набор не стандартный, т.е. в разных ячейках будут использоваться разные столбцы, остальыне оставаться пустыми, то будет жуткий перерасход места, которого не будет в варианте Shat'а.
1000 int'овых столбцов - это уже 4 кб (при размере страницы 8 кб).
Единственное с чем я не согласен в варианте Sharp'a - вместо parameter_name я бы использовал parameter_id, 2-байтный, чтоб не тратить место на хранение названия столбцов (название может иметь длину 10-20 байт)
В SQL Server 2008 появилась такая фишка как Sparce Columns, специальный способ хранения данных для сценарием, когда большая часть столбцов содержит null-значения
NULL-значения в этом случае вообще не занимают места. Поищи в Books Online информацю по этой теме.