![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Приветствую.
Работаю с большими объемами данных, суточные логи определенных параметров. Храню все это в БД под управлением MSSQL Server CE 3.5. Размер лога может измеряться несколькими сотнями МБ. Сам лог храню в поле типа image Проблема в том, что извлечение данных лога? являющейся одной строкой БД, естественно длительная и затратная по памяти процедура, так как поле типа image у меня многобегабайтное. И главное то, что весь этот лог никогда целиком не нужен. Сейчас я извлекаю все данные из поля типа image в массив byte[], затем беру оттуда только то, что нужно. Нет ли возможности извлечь только часть данных из строки, а не всю строку? Сам подозреваю, что нет. Каким образом люди хранят большие массивы данных, для которых надо еще хранить какое-то описание, типа где когда эти данные были собраны, при каких условиях и пр.? Спасибо. |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Обычно если необходимы выборки по даным, то их хранят в виде таблицы с формализованными параметрами, а не скопом.
пример одной записи в таблице: id - 1 EventType - Взлом системы Description - bla-bla Ну а далее например хотим выбрать только взломы, пишем: SELECT * FROM TABLE WHERE EventType= 'Взлом системы'; -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
а чтобы свою базу не сделать? Много файловую. В одной собственно лог, в популярном формате текста 8)
а в реальной базе (раз уж так хочется) хранить описание + offset (смещение в байтах) записи в текстовом логе. итого поиск будет быстр (база маленькая очень), а открытие лога не такое и затратное (openFile+seek+read N bytes) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Да спасибо, я прихожу к этому же выводу. Только все же в базе хранить имя файла, в котором лог. А логи пусть хранятся в отдельных файлах с разными именами. Я просто хотел услышать от кого-то о реальном проекте, где стояла подобная же проблема. Казалось, что в современном мире гиговые логи и их хранение задача частая. |
|||
|
||||
likegift |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
Ну и зачем в таком случае база, если логи все равно хранятся в файлах. А разделение на файлы по какому принципу?
|
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Каждый лог в отдельном файле. А в базе хранится описание лога, дата, время и много других параметров. Каждая сточка базы это набор таких параметров, относящихся к одному логу + путь к файлу лога. |
|||
|
||||
likegift |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
это конечно не мое дело, но обычный лог, состоящий из тела лога, статуса лога, id лога и времени лога не тока проще хранить в базе, но и изымать оттуда, используя гибкий механизм запросов. а так получается, изучая состояние системы за определенный период, я должен выбрать несколько файлов и работать с ними? |
||||
|
|||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Посмотрите на мое первое сообщение. Я именно такую систему сейчас и сделал, когда "обычный лог, состоящий из тела лога, статуса лога, id лога и времени лога хранится в базе и изымается, использую гибкий механизм запросов". Но вот гибкий механизм запросов не позволяет изъять только часть тела лога из базы. В терминах БД нет возможности прочитать часть строки БД. Или я чего-то не знаю? При переходе к файлам строка БД будет читаться очень быстро ибо имеет только ссылку на файл с логом, а не сам лог в качестве одного из полей БД. |
|||
|
||||
likegift |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
А что является у вас телом лога?
|
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Большой (скажем до 200-300 Мб) массив байт. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |