Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение больших массивов в БД, SQL CE 3.5 
:(
    Опции темы
jorikdima
Дата 19.5.2011, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Приветствую.

Работаю с большими объемами данных, суточные логи определенных параметров. Храню все это в БД под управлением MSSQL Server CE 3.5. Размер лога может измеряться несколькими сотнями МБ. Сам лог храню в поле типа image
Проблема в том, что извлечение данных лога? являющейся одной строкой БД, естественно длительная и затратная по памяти процедура, так как поле типа image у меня многобегабайтное. И главное то, что весь этот лог никогда целиком не нужен. Сейчас я извлекаю все данные из поля типа image в массив byte[], затем беру оттуда только то, что нужно.

Нет ли возможности извлечь только часть данных из строки, а не всю строку? Сам подозреваю, что нет.
Каким образом люди хранят большие массивы данных, для которых надо еще хранить какое-то описание, типа где когда эти данные были собраны, при каких условиях и пр.?
Спасибо.
PM MAIL   Вверх
Artemon
Дата 19.5.2011, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Обычно если необходимы выборки по даным, то их хранят в виде таблицы с формализованными параметрами, а не скопом.

пример одной записи в таблице:

id - 1
EventType - Взлом системы
Description - bla-bla


Ну а далее например хотим выбрать только взломы, пишем: SELECT * FROM TABLE WHERE EventType= 'Взлом системы';





--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
jonie
Дата 19.5.2011, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



а чтобы свою базу не сделать? Много файловую. В одной собственно лог, в популярном формате текста 8)
а в реальной базе (раз уж так хочется) хранить описание + offset (смещение в байтах) записи в текстовом логе.
итого поиск будет быстр (база маленькая очень), а открытие лога не такое и затратное (openFile+seek+read N bytes)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
jorikdima
Дата 19.5.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Цитата(jonie @ 19.5.2011,  14:40)
а чтобы свою базу не сделать? Много файловую.

Да спасибо, я прихожу к этому же выводу. Только все же в базе хранить имя файла, в котором лог.  А логи пусть хранятся в отдельных файлах с разными именами.
Я просто хотел услышать от кого-то о реальном проекте, где стояла подобная же проблема. Казалось, что в современном мире гиговые логи и их хранение задача частая.
PM MAIL   Вверх
likegift
Дата 19.5.2011, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 14.10.2008

Репутация: нет
Всего: 3



Ну и зачем в таком случае база, если логи все равно хранятся в файлах. А разделение на файлы по какому принципу? 
PM MAIL   Вверх
jorikdima
Дата 20.5.2011, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Цитата(likegift @ 19.5.2011,  21:24)
Ну и зачем в таком случае база, если логи все равно хранятся в файлах. А разделение на файлы по какому принципу?

Каждый лог в отдельном файле. А в базе хранится описание лога, дата, время и много других параметров. Каждая сточка базы это набор таких параметров, относящихся к одному логу + путь к файлу лога.
PM MAIL   Вверх
likegift
Дата 20.5.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 14.10.2008

Репутация: нет
Всего: 3



Цитата(jorikdima @ 20.5.2011,  12:04)
Цитата(likegift @ 19.5.2011,  21:24)
Ну и зачем в таком случае база, если логи все равно хранятся в файлах. А разделение на файлы по какому принципу?

Каждый лог в отдельном файле. А в базе хранится описание лога, дата, время и много других параметров. Каждая сточка базы это набор таких параметров, относящихся к одному логу + путь к файлу лога.

это конечно не мое дело, но обычный лог, состоящий из тела лога, статуса лога, id лога и времени лога не тока проще хранить в базе, но и изымать оттуда, используя гибкий механизм запросов.
а так получается, изучая состояние системы за определенный период, я должен выбрать несколько файлов и работать с ними?
PM MAIL   Вверх
jorikdima
Дата 20.5.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Цитата(likegift @ 20.5.2011,  09:54)
это конечно не мое дело, но обычный лог, состоящий из тела лога, статуса лога, id лога и времени лога не тока проще хранить в базе, но и изымать оттуда, используя гибкий механизм запросов.
а так получается, изучая состояние системы за определенный период, я должен выбрать несколько файлов и работать с ними?

Посмотрите на мое первое сообщение. Я именно такую систему сейчас и сделал, когда "обычный лог, состоящий из тела лога, статуса лога, id лога и времени лога хранится в базе и изымается, использую гибкий механизм запросов". Но вот гибкий механизм запросов не позволяет изъять только часть тела лога из базы. В терминах БД нет возможности прочитать часть строки БД. Или я чего-то не знаю?
При переходе к файлам строка БД будет читаться очень быстро ибо имеет только ссылку на файл с логом, а не сам лог в качестве одного из полей БД.
PM MAIL   Вверх
likegift
Дата 21.5.2011, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 14.10.2008

Репутация: нет
Всего: 3



А что является у вас телом лога?
PM MAIL   Вверх
jorikdima
Дата 21.5.2011, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Цитата(likegift @ 21.5.2011,  05:51)
А что является у вас телом лога?

Большой (скажем до 200-300 Мб) массив байт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.