Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Локальная работа с большими объемами данных  [new]
Dremlin
Member

Откуда:
Сообщений: 61
Здравствуйте.
У меня следующий вопрос.
Клиент должен работать (только чтение данных) с наборами таблиц локально.
Таблицы будут выгружены с SQL Server'а или в виде Flat-файлов, или в виде файлов dbf, и отправлены клиентам.
Сложность заключается в том, что объемы данных могут быть большими (порядка 2-5 млн записей в таблице) и, как я думаю, работа настольной СУБД, например, как Paradox, будет очень медленнной.
При работе же с текстовыми файлами встает вопрос производительности и сложность обработки данных (т.е. в клиентском приложении будет множество DML операций, и как работать с простыми текстовыми файлами... отается проблемой). Что посоветуете? Заранее спасибо за ответ.
10 авг 04, 08:37    [870227]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
avlih
Member

Откуда: Мурманск
Сообщений: 148
acsess. а можно узнать причину такой задачи подробнее?
10 авг 04, 09:14    [870280]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17472
только не акс... если так уж нравятся текстовые файлы то csv...
автор
Сложность заключается в том, что объемы данных могут быть большими (порядка 2-5 млн записей в таблице
при таких обьемах все что угодно локально тормозить будет..
10 авг 04, 09:25    [870306]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
MaratIsk
Member

Откуда: Almaty, Kazakhstan
Сообщений: 2568
т.е. в клиентском приложении будет множество DML операций -- и это работа только на чтение?!

1 или 2 млн. не имеет значения для нормально написанного приложения.
10 авг 04, 09:35    [870333]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
MaratIsk
Member

Откуда: Almaty, Kazakhstan
Сообщений: 2568
PS
имел ввиду и 5 млн.
10 авг 04, 09:36    [870336]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17472
да?
10 авг 04, 09:41    [870349]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
karly™
Guest
Dremlin
Здравствуйте..
Здравствуйте

Dremlin
Клиент должен работать (только чтение данных) с наборами таблиц локально. Таблицы будут выгружены с SQL Server'а или в виде Flat-файлов, или в виде файлов dbf, и отправлены клиентам.
DBF = > Visual FoxPro

Dremlin
Сложность заключается в том, что объемы данных могут быть большими (порядка 2-5 млн записей в таблице) и, как я думаю, работа настольной СУБД, например, как Paradox, будет очень медленнной.
Быстрее, чем Fox работает с локальными dbf-таблицами, ничего не найти. 5 млн. записей - не проблема. Единственное ограничение - размер одной таблицы не может превышать 2Gb. Это связано с применяемой технологией блокировок.

Dremlin
При работе же с текстовыми файлами встает вопрос производительности и сложность обработки данных (т.е. в клиентском приложении будет множество DML операций, и как работать с простыми текстовыми файлами... отается проблемой).
В твоем распоряжении будет богатый DML, так что здесь даже обсуждать нечего
10 авг 04, 11:18    [870689]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Dremlin
Member

Откуда:
Сообщений: 61
В общем, задача такая. Есть программа билинговой системы для печати квитанций абонентам. Она клиент-серверная. До этого все квитанции формировались в центральном офисе, где и физически расположены все сервера. Проблема в том, что печать на месте есетественно будет произведена намного быстрее, чем у заказчика. Заказчик хочет печатать квитанции у себя в другом городе за тысячи километров от центрального офиса. Перед печатью квитанций формируются данные, которые как раз и отправляются заказчику в виде текстовых файлов, где на их основе будет производится локальная печать квитанций.
Наши специалисты говорят, что настольная СУБД не подойдет для больших объемов данных, а работать с текстовыми файлами как с таблицами геморно (скажим легко ли будет иммитировать SQL-запрос с множеством подзапросов работая только с текстовыми файлами).
10 авг 04, 11:26    [870719]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Dremlin
Member

Откуда:
Сообщений: 61
В общем, задача такая. Есть программа билинговой системы для печати квитанций абонентам. Она клиент-серверная. До этого все квитанции формировались в центральном офисе, где и физически расположены все сервера. Проблема в том, что печать на месте есетественно будет произведена намного быстрее, чем у заказчика. Заказчик хочет печатать квитанции у себя в другом городе за тысячи километров от центрального офиса. Перед печатью квитанций формируются данные, которые как раз и отправляются заказчику в виде текстовых файлов, где на их основе будет производится локальная печать квитанций.
Наши специалисты говорят, что настольная СУБД не подойдет для больших объемов данных, а работать с текстовыми файлами как с таблицами геморно (скажим легко ли будет иммитировать SQL-запрос с множеством подзапросов работая только с текстовыми файлами).
10 авг 04, 11:28    [870727]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
karly™
Guest
Dremlin
Наши специалисты говорят, что настольная СУБД не подойдет для больших объемов данных
А чем ваши специалисты аргументируют? Этико-религиозными соображениями?

Клиент-сервер от настольной БД отличается
а) Большими возможностями по контролю за доступом к данным
б) Большими возможностями по восстановлению после сбоев
в) Большим количеством одновременно работающих пользователей

Настольные БД
а) Требуют намного меньше ресурсов
б) Данные занимают меньше места (в разы)
б) Работают гораздо быстрее (локально - в десятки раз)

О разнице в поддерживаемых объемах имеет смысл говорить, если объемы измеряются гигабайтами.

В вашем случае:
а) Шифровать данные и разделять права доступа не требуется
б) Данные не редактируются, поэтому сбои исключены
в) Одновременная работа десятков пользователей в одной базе не нужна

И в чем преимущество "не настольных" СУБД? Наживать себе гемморой только потому, что вера не позволяет использовать что-то кроме Oracle?

Я вам советую провести пару простых тестов. Установите Фокс. Создайте пустую таблицу, и добавьте в нее свои 5млн. записей из текстового файла. Выполните несколько запросов. Потом проиндексируйте ключевые поля и снова выполните те же запросы. Сравните время выполнения этих операций с аналогичными действиями на SQL Sever. Думаю, надобность писать в этот форум отпадет.

Да, еще. Если речь идет о печати квитанций - в Фоксе есть встроенный генератор отчетов. Он достаточно прост, зато быстр. Для печати квитанций - то, что надо. Говорю это, исходя из собственного опыта - приходилось распечатывать отчеты по 6тыс. страниц.
10 авг 04, 12:30    [870985]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
karly™
Guest
Конкретные данные:

Таблица dbf - (F1 c(100), F2 N(10.0), F3 D, F4 L) 5млн.записей занимает 572Mb. Экспорт этого объема в текстовый файл - 37 сек, добавление из текстового файла - 42 сек. Поиск случайного значения по полю F2 (N10.0) - не более 2 сек без использования индексов.

Комп - PIV 2Ггц, 256Mb
Операционка - Win2000, NTFS, антивирус отключен.
10 авг 04, 14:17    [871384]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3155
karly™
Поиск случайного значения по полю F2 (N10.0) - не более 2 сек без использования индексов.

С одного диска? В dbf'е то данные построчно лежат, в кэш явно не помещаются. Без индекса - не верю.
10 авг 04, 20:07    [872540]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145754
Dremlin. Что-то я не въехал. То, что Вы называете клиент-сервером реализовано на DBF? На кой фиг посылать филиалам какие-то таблы? Что, запросы уже отменили? Или, хотя я и не сторонник такого подхода - репликации тоже уже не работают?
Для печати квитанций для нормального клиент-сервера тысячи километров не помеха. тут не в километрах дело. Вы про сети слышали?
====================
Извините, что может быть слишком резко. Но это мне напомнило случай, когда в головной фирме отсылали в филиалы инфу по факсу, там ее сканирили, распознавали и специальной прогой подгружали в базу.
======
Я-то первоначально думал, что речь идет о каком-то справочнике на CD.

+++++
Те, кто думают, что я питаюсь исключительно кровью новорожденных младенцев, ошибаются. Я их еще и жарю!
10 авг 04, 22:43    [872723]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
karly™
Guest
2 Локшин Марк
Вместо "не верю" лучше проделать то же самое и сказать "А у меня получилось в 10 раз больше/меньше".

Данные лежат построчно, но для поиска по одному полю считывается не вся таблица, а только это поле. Вот если делать поиск по подстроке текстового поля (оно занимает больше всего места в таблице указанной структуры), результаты были бы другие.
11 авг 04, 12:34    [873850]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3155
karly™
Данные лежат построчно, но для поиска по одному полю считывается не вся таблица, а только это поле. Вот если делать поиск по подстроке текстового поля (оно занимает больше всего места в таблице указанной структуры), результаты были бы другие.

Гы гы. Т.е. вы утверждаете, что если читать данные с диска по схеме прочитал 4 байта - 110 пропустил, и т.д. то получится быстрее? Ну-ну.
Если находится за две секунды, то скорее всего эти записи находятся в начале таблицы. Ну нет сейчас дисков которые по 290 МБ в секунду считывают. И при построчном хранении невозможно считывать только один столбец. По крайней мере с таким размером строки, как у вас.
11 авг 04, 13:24    [874115]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
Urri
Member

Откуда: Москва
Сообщений: 2693
2karly™

Ну, положим, без индекса поиск за 2 сек возможен, но не любого значения (тут все будет зависеть от того, насколько близко к началу таблицы находится искомая запись). Но, в целом, поддерживаю: FoxPro - лучший выбор. А предусмотреть индексирование можно при первом открытии таблицы. Вот уж с индексами поиск занимает много меньше 0.01 секунды ;-)
11 авг 04, 14:37    [874490]     Ответить | Цитировать Сообщить модератору
 Re: Локальная работа с большими объемами данных  [new]
S.G.
Member

Откуда: cartoon network
Сообщений: 30611
автор
Проблема в том, что печать на месте есетественно будет произведена намного быстрее, чем у заказчика. Заказчик хочет печатать квитанции у себя в другом городе за тысячи километров от центрального офиса. Перед печатью квитанций формируются данные, которые как раз и отправляются заказчику в виде текстовых файлов, где на их основе будет производится локальная печать квитанций.
Если инфа будет только печататься, то мне кажется, со скоростью проблем быть не должно- все равно самая медленная часть будет именно печать.

Хотя... там будет печатаься все за раз, или отпечатываться по одному, для подошедшего клиента?
12 авг 04, 18:10    [878412]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить