Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Выбор БД Добавлено: 10.03.10 14:34  

Автор вопроса:  turBO | Web-сайт: blitz3d.at.ua | ICQ: 451232820 
Помогите выбрать Базу данных.
Данные будут храниться в нескольких таблицах, предполагается несколько 10-в тыс. записей. Одна из таблиц будет состоять из около 1024 колонок (MS Access отпадает). База клиентская, т.е. на той же машине. Очень желательна поддержка ODBC. И главное - бесплатность.

P.S. Разработка ведется на VB.Net.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 10.03.10 15:23
MySQL

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 10.03.10 18:45
SQL Server Express
SQL Server CE

Одна из таблиц будет состоять из около 1024 колонок

Можешь рассказать, зачем в таблице нужно аж 1024 колонки???

Ответить

Номер ответа: 3
Автор ответа:
 turBO



ICQ: 451232820 

Вопросов: 9
Ответов: 13
 Web-сайт: blitz3d.at.ua
 Профиль | | #3
Добавлено: 10.03.10 22:05
Можешь рассказать, зачем в таблице нужно аж 1024 колонки???


Я сам являюсь сторонником того, что таблицы с >100 полями - маразм, но задача нетривиальная. Имеется около 1000 параметров, названия полей не знаем и создаём поля по ходу получения новых параметров. Пользователь будет выбирать по названию нужные ему параметры и получать выгрузки.

SQL Server Express вроде серверный, а планируется распространение программы в виде дистрибутива без каких либо доустановок и настроек!

А как насчёт FireBird Embedded?

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 10.03.10 22:19
SQL Server Express может использоваться в клиентских сценариях.
SQL Server CE больше подходит для клиентских программ, его можно использовать даже без установки, и размер рантайма очень маленький (несколько мегабайт).


Я сам являюсь сторонником того, что таблицы с >100 полями - маразм, но задача нетривиальная. Имеется около 1000 параметров, названия полей не знаем и создаём поля по ходу получения новых параметров. Пользователь будет выбирать по названию нужные ему параметры и получать выгрузки.

Эта задача решается проше, и без таблицы с 1000 столбцами,

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 11.03.10 11:25
SQLite?
Если вы не знаете названия параметров, следует использовать не DDL, а DML, т.е. создать таблицу parameter_name, parameter_value и добавлять туда строки вместо колонок.

Ответить

Номер ответа: 6
Автор ответа:
 turBO



ICQ: 451232820 

Вопросов: 9
Ответов: 13
 Web-сайт: blitz3d.at.ua
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 12.03.10 13:52
800к записей это ерунда, тем более что весить они будут столько же.
Пример запроса:
  1. select id, count(*) as c from dml where (`key`='v1' and `val`=1) or (`key`='v2' and `val`=0) group by id having c=2

Ответить

Номер ответа: 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 информацю по этой теме.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам