powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как работать с очень большими масивами
25 сообщений из 315, страница 1 из 13
Как работать с очень большими масивами
    #39545772
Вопрос прост и явно не раз где-нибудь обсуждался, но быстро решение гуглением не нашел.
Как работать с массивом около 10 миллиардов (1е10) значений типа реал (да - все десять миллиардов разные числа формата 9.12345е26, готов на любой другой тип способный съесть подобный формат чисел).

Массив задан записью: рекорд[1..3] of рекорд[1..20] of рекорд[1..60] of рекорд[1..60] of рекорд[1..163] of рекорд[1..312] с кучей побочных параметров на каждом уровне.

Если сразу задать массив размером больше миллиарда - too large: exceeds 2 GB, подозреваю, что если динамически - просто вылетит на определенном этапе заполнения.

Можно конечно и отказаться от данного формата работы сразу со всем объемом данных, но так неохота...
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545786
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
набить компьютер терабайтом памяти и использовать компилятор под x64
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545787
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
или виртуализировать массив на диске (возможно, RAM-диске).
Но придётся писать код
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545790
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать кэширование на диске, например. Заменить record на class с индексным свойсвом, и подгружать следующие уровни по необходимости, если логика приложения это позволяет.

А если необходимо чтобы всё сразу было доступно, то да - охренелиард оперативки и x64 компилятор.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545811
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Bujhtdbx,

Сделать из массива БД и отдать на откуп любимому SQL серверу - не предлагать? Что с этими данными-то делать нужно?
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545814
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей BujhtdbxКак работать
А что подразумевается под "работать"?
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545815
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
982183Андрей BujhtdbxКак работать
А что подразумевается под "работать"?
хотя бы нулями заполнить ))))
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545816
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Bujhtdbx,

1) как заполняется массив?
2) где хранятся данные для массива?
3) почему нельзя использовать СУБД?
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545824
Freedoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecatorили виртуализировать массив на диске (возможно, RAM-диске). Но придётся писать код
alekcvpИспользовать кэширование на диске, например.
Делаем по образу файла подкачки Windows:
создаём типированный файл (f: file of tMegaRecord), небольшой массив для кеширования (buf: array of tMegaRecord) и работаем, пока на диске есть место.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545834
DarkMasterАндрей Bujhtdbx,

Сделать из массива БД и отдать на откуп любимому SQL серверу - не предлагать? Что с этими данными-то делать нужно?

Предлагать можно, но я такое не умею :(. Может как-нибудь позже. Программа пишется для себя, сам ни разу не программист.

982183Андрей BujhtdbxКак работать
А что подразумевается под "работать"?

В зависимости от пожеланий пользователя (то биш меня) сохранять разные относительно небольшие части этих огромных массивов в другие файлы. Выводить в виде множество разных графиков (от времени, высоты, перегрузок, прочего), в идеале выводить значения полей для сечений (это файлы полей для определенной геометрии). Объяснять подробно долго, и врят ли вам интересно.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545837
GerasimenkoАндрей Bujhtdbx,

1) как заполняется массив?
2) где хранятся данные для массива?
3) почему нельзя использовать СУБД?

1. Посредством считывания двух десятков текстовых файлов по 1-2 гб каждый.
2. Если вы про исходники - как уже написал, в виде текстовых файлов, в программе пока нигде.
3. Потому, что не умею :). Долго разбираться?


Freedoomdefecatorили виртуализировать массив на диске (возможно, RAM-диске). Но придётся писать код
alekcvpИспользовать кэширование на диске, например.
Делаем по образу файла подкачки Windows:
создаём типированный файл (f: file of tMegaRecord), небольшой массив для кеширования (buf: array of tMegaRecord) и работаем, пока на диске есть место.

О, первый ответ, который можно попробовать реализовать с моими знаниями. Попробую разобраться.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545844
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей BujhtdbxDarkMasterАндрей Bujhtdbx,

Сделать из массива БД и отдать на откуп любимому SQL серверу - не предлагать? Что с этими данными-то делать нужно?

Предлагать можно, но я такое не умею :(. Может как-нибудь позже. Программа пишется для себя, сам ни разу не программист.
С такими данными, рано или поздно вам придется использовать СУБД.
Лучше начните сейчас, сначала будет немного в гору, потом сильно полегчает.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545854
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей BujhtdbxDarkMasterАндрей Bujhtdbx,

Сделать из массива БД и отдать на откуп любимому SQL серверу - не предлагать? Что с этими данными-то делать нужно?

Предлагать можно, но я такое не умею :(. Может как-нибудь позже. Программа пишется для себя, сам ни разу не программист.

982183пропущено...

А что подразумевается под "работать"?

В зависимости от пожеланий пользователя (то биш меня) сохранять разные относительно небольшие части этих огромных массивов в другие файлы. Выводить в виде множество разных графиков (от времени, высоты, перегрузок, прочего), в идеале выводить значения полей для сечений (это файлы полей для определенной геометрии). Объяснять подробно долго, и врят ли вам интересно.

Ну как бы СУБД именно и заточены на перелопачивание миллионов таких чисел. А сделать выборку (кусочек) от всего набора по каким-то условиям - вообще просто. В общем советую начинать смотреть в сторону СУБД. Городить свой велосипед, основанный на файлах - можно, но более трудоемко. Подумайте - в будущем вам понадобится поиск или индексы - прямая дорога к СУБД.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545893
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.С такими данными, рано или поздно вам придется использовать СУБД.
Для таких блобов (~75GB) СУБД нафиг не нужна. Только руками, только хардкор.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545900
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В составе TurboPower SysUtils есть готовый класс для реализации виртуальных двумерных массивов.
Файл StVArr.pas

Там можно создавать массивы любого размера, сколько хватит места на диске.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545905
Freedoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster ...Городить свой велосипед, основанный на файлах - можно, но более трудоемко. Подумайте - в будущем вам понадобится поиск или индексы - прямая дорога к СУБД.
Общий объём данных (double x 10e10) составит около 75Gb. Сколько времени займёт создание БД с таким объёмом и не будет ли ограничений по количеству записей? Чтение и запись файла на диск ограничивается только производительностью HDD. Работа с файлами ничего сложного и трудоёмкого не представляет (write или blockwrite). Если копнуть чуть глубже, то все СУБД, в конечном итоге, сводятся на работу с файлами
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545907
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Андрей BujhtdbxКак работать
А что подразумевается под "работать"?

Лопатой ворочать. Пока все 10е10 не проворочаешь, на обед не пойдешь.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545910
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
FreedoomDarkMaster ...Городить свой велосипед, основанный на файлах - можно, но более трудоемко. Подумайте - в будущем вам понадобится поиск или индексы - прямая дорога к СУБД.
Общий объём данных (double x 10e10) составит около 75Gb. Сколько времени займёт создание БД с таким объёмом и не будет ли ограничений по количеству записей? Чтение и запись файла на диск ограничивается только производительностью HDD.

можно положить на SSD
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545911
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreedoomЕсли копнуть чуть глубже, то все СУБД, в конечном итоге, сводятся на работу с файлами

Если копнуть еще глубже, то не только СУБД, а почти все программы.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545944
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найти сервер с не менее чем 82 Гб ОЗУ. Компилятор строго x64. Данные размещать не в стеке (его не хватит: в x32 16 МБ максимум, в x64 не знаю), а в куче (класс с вашим массивом создайте).
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545949
Эх, видимо придется разбираться, я уже о способах обработки данных думал :(, а пока даже массив загнать в программу не могу. Можно, конечно, задав исходные условия поочередно подгружать и обрабатывать файлы, но тогда каждый запрос будет как минимум ограничиваться временем чтения 40гб текстовых файлов.

Ладно, либо разберусь с кешем или базами :), либо просто реализую частичную загрузку, сначала выбираю часть данных, с которыми хочу работать, работаю с ними. Если хочу другу часть - выгружаю старую, подгружаю новую. А ведь это даже не самые большие файлы полей.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39545998
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Андрей BujhtdbxЭх, видимо придется разбираться, я уже о способах обработки данных думал :(, а пока даже массив загнать в программу не могу. Можно, конечно, задав исходные условия поочередно подгружать и обрабатывать файлы, но тогда каждый запрос будет как минимум ограничиваться временем чтения 40гб текстовых файлов.

Ладно, либо разберусь с кешем или базами :), либо просто реализую частичную загрузку, сначала выбираю часть данных, с которыми хочу работать, работаю с ними. Если хочу другу часть - выгружаю старую, подгружаю новую. А ведь это даже не самые большие файлы полей.

а может быть, стоит задуматься о структурах данных более тщательно
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546010
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
01.11.2017 14:05, defecator пишет:
> а может быть, стоит задуматься о структурах данных более тщательно

+100500!

а ТС-у можно рекомендовать ознакомиться с книжкой Н.Вирта "Алгоритмы + структуры данных = программы"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546025
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

+1.

Очень даже возможно, что человеку не нужен этот гиганский массив. Либо наоборот - тут и петабайтных размеров мало будет.
Мы не знаем, о какой предметной области идет речь, насколько ТС в ней компетентен,насколько адекватна выбранная модель отображения предметной области в компьютеризуемую задачу.

Например, если знаешь, что такой-то параметр на заданном участке меняется линейно, вовсе нет надобности хранить значение этого параметра для каждого кванта времени.

Я понимаю, что был задан конкретный вопрос, не связанный с предметной областью. Однако, учитывая большие объемы, важно принять правильное решение.
...
Рейтинг: 0 / 0
Как работать с очень большими масивами
    #39546027
defecatorАндрей BujhtdbxЭх, видимо придется разбираться, я уже о способах обработки данных думал :(, а пока даже массив загнать в программу не могу. Можно, конечно, задав исходные условия поочередно подгружать и обрабатывать файлы, но тогда каждый запрос будет как минимум ограничиваться временем чтения 40гб текстовых файлов.

Ладно, либо разберусь с кешем или базами :), либо просто реализую частичную загрузку, сначала выбираю часть данных, с которыми хочу работать, работаю с ними. Если хочу другу часть - выгружаю старую, подгружаю новую. А ведь это даже не самые большие файлы полей.

а может быть, стоит задуматься о структурах данных более тщательно
Эти данные я получаю уже в готовом виде, да и ничего особенного тут нет, обычные поля (нейтронные, температурные) в пространстве и времени, просто поля в геометрии задаются исходя из особенностей конструкции. При том сетка по высоте и времени далеко не плотная.
...
Рейтинг: 0 / 0
25 сообщений из 315, страница 1 из 13
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как работать с очень большими масивами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]