Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
Как быть? Таблица выходит за пределы 2Гб, а сокращать не хочется. Наверное нужно ставить флажок на размер и по исчерпании 2Гб создавать новую? Подскажите пожалуйста как это делать, а то у меня тут такое:
http://www.rusl.ru/img/fox-screen13.gif |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
Alex Roublev Сообщений: 3695 Откуда: Ярославль Дата регистрации: 28.09.2002 |
Не мучь животное (в смысле - фоксу). Посчитай размер одной записи в байтах. Определи сколько максимально записей можно сделать. При исчерпании лимита записей заводи автоматизированно новую таблицу.
Цитата: Это какой такой флажок? В VFP нет никаких (таких!) флажков, с помощью которых можно было бы задавать и изменять размер размер рабочей таблицы. Это не MS SQL 2000 Server. Кстати, а ежели количество записей нарастает с такой быстротой, то может быть задачу реализовывать на основе SQL Server'а? Там все-таки таблицы м.б. по 4Гб. Но если и этого не хватит, то впору осмыслить логику самой задачи. Отредактировано (14.03.05 04:55) ------------------ И волки сыты, и овцы целы, и пастуху - вечная память... |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
Если кратко, то таблица получается так.
Берутся текстовые файлы (примерно тыс.5), разбиваются на слова и записываются в таблицу TABLE (DataTable) (FileNameID I, SubWord C(50), Frequency N(12,10)) FileNameID - ID файла SubWord - слово Frequency - его частота Может такой размер из-за 50 символов зарезервированных под размер слова? |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Давай считать
FileNameID I - 8 байт SubWord C(50) - 50 шт Frequency N(12,10) - по максимуму 20 байт Deleted - 1 байт итого 79 байт на запись, 2Г/79 = 25 млн записей - твой предел в таблице, те в 5 тыс файлов по 5тыс слов. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
Посчитал кол-во записей: 32051988
Отредактировано (14.03.05 18:10) ------------------ |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
Alex Roublev Сообщений: 3695 Откуда: Ярославль Дата регистрации: 28.09.2002 |
Цитата: Да уж. Можно представить себе сколько пустого пространства пропадает. Вот тебе и 2 Гб. "Вот те, бабушка, и Юрьев день..." А если, к примеру, вставлятьслова в memo-поле? Должно быть выйдет компактнее в несколько раз. А слова вставляются в поле без учета уникальности? Слов столько, сколько их существует в 5 тыс. файлов? В орфографическом словаре русского языка ведь не наберется столько... Вобщем проблему осознаю. Что-нибудь придумаю. |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
Alex Roublev Сообщений: 3695 Откуда: Ярославль Дата регистрации: 28.09.2002 |
Отредактировано (15.03.05 00:35) ------------------ И волки сыты, и овцы целы, и пастуху - вечная память... |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, PaulWist!
Цитата:4 байта. Цитата:Ровно 12 - если заменить на тип Double, то будет всего 8 байт - точность не пострадает. ------------------ WBR, Igor |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Alex!
Цитата:Тогда и BLOCKSIZE крутить - иначе блоками по 64 байта будет резать! А размер fpt ограничен всё теми-же 2Гб. Цитата:Не совсем. Во-первых там собственно "размер блока" и "тип блока" хранятся - соответственно 8 байт на каждый элемент уже теряем. Во-вторых с индексацией будут вопросы - придётся по какой-то функции индексировать ("просто так" memo не индексируется, что вполне разумно) - это потеря скорости. Кроме того может встать вопрос о размере индексного файла - он ограничен всё теми-же 2Гб. Без индекса перебор 2Гб да ещё и с memo - это сущий кошмар будет В-третьих работа с memo в Shared режиме вызывает накопление "мусора" в fpt - фокс НЕ переписывает там блоки, а добавляет новые по мере модификаций (даже если данные отлично помещаются и в пространство старого блока). Ну и наконец даже если удастся увеличить "ёмкость" таблицы в 2 раза (что есть далеко не факт) - то проблема всё равно появится - просто чуть позже. В общем что-то делать с "разделением" на ряд таблиц нужно. Только автоматом тут ничего не бывает - всё придётся руками рисовать... Насчёт числа слов в языке я согласен - тем более что язык английский - и там даже БЕЗ устранения различий словоформ так много слов не будет. Видимо тут имеет место ошибка со структурой таблиц (СЛОВА по идее нужно хранить отдельно от их "частоты употребления в тексте") - т.е. таблица частоты - это File Int + Word Int + Freq Double - итого 17 байт на элемент - т.е. порядка 128 миллионов. Собственно слова - хранить в отдельной таблице - там можно и 50 байт/слово (словарь на 40млн - это явно перекроет все потребности анализа интернета ) - т.к. слов явно поменьше будет. Кроме того таким макаром можно сразу решать проблему "отсечения" всяких "паразитов" - т.е. не-слов/предлогов/атриклей/местоимений - возможно нормальных слов, но не интересных с точки зрения поставленной задачи - например банальные числительные "one two ... firts second ..." вряд-ли как-то поспособствуют определению смысловой направленности текста ------------------ WBR, Igor |
Re: Как лучше работать с таблицами вышедшими за пределы 2Гб? | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Цитата: Да, правильно, спутал с Numeric в памяти. Цитата: ну написано - по максимуму. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
© 2000-2024 Fox Club  |