powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сохранять строки в бинарных файлах?
31 сообщений из 31, показаны все 2 страниц
Как сохранять строки в бинарных файлах?
    #39580282
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть набор больших текстовых файлов, которые для ускорения работы я конвертирую в удобный формат: парсю отдельные строки, укладываю преобразованные значения в поля в структуры, структуры укладываю в массив, а массив записываю в бинарный файл :)

Как быть с текстовыми полями:
1. Если в структуре объявить поле типа char [250], то это будет очень расточительно (не всем значениям нужна такая длина).
2. Если в структуре объявить поле std::string, то структура перестанет быть POD- объектом и работать с ней как с последовательностью битов уже будет нельзя. Как следствие отваливается возможность сохранения данных в файл.

Есть какие-то симпатичное решения сохранения текстовых данных в бинарных файлах?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580291
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Симпатичные" это которые можно применять не задействуя мозг?..

STFW "сериализация в файл".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580296
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovSTFW "сериализация в файл".


Спасибо, уже читаю.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580298
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно ускорение и удобство - это два взаимоисключающих свойства.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580301
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСериализатор — наш самый страшный враг. Без него нам не обойтись, а он все шепчет о том, что если все оставить строками, то мы получим аналог динамической типизации. «И нет смысла трепыхаться, — говорит он, — ведь на стороне клиента от нас ждут строку JSON или XML. Зачем же нам целое число, храни в классе набор строк!» Страшные вещи творят несчастные разработчики, порабощенные таинственным шепотом, повсюду в их коде строки. Те же, что сильнее духом, но не окрепшие разумом, напротив, преобразуют зазря туда-сюда данные в байты и обратно. Радостно потирает руки Сериализатор, видя, как страдает эффективность.

...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580302
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580314
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У сериализации есть громадные минусы:
1. Все структуры разного размера, поэтому каждую структуру надо писать/читать в/из bin-файла отдельно. Т.е. нельзя записать/считать сразу 10 000 структур из файла.
2. Структуру нельзя писать/читать в/из bin-файла как единый объект. Надо работать с каждым полем отдельно.

Другими словами, такой способ не прокатит:
Код: plaintext
1.
2.
3.
cchar* pChar = (char*) ArrayOfStructure.begin();
std::streamsize MemorySize = ArrayOfStructure.Size() * sizeof(TypeStructure);
File.write(pChar, MemorySize);



Поэтому теряется скорость чтения bin-файла, ради которой все затевалось.

Возникает другое предложение: количество значений текстовых данных ограничено, поэтому можно создать отдельный файл с "Индексом" используемых значений строк, а в структурах хранить только номер индекса. Какой контейнер выбрать, чтобы осуществлялся быстрый поиск как по ключу (при чтении bin-файла), так и по значению (при записи bin- файла)?

Может я что-то неправильно понял и есть более простое решение?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580316
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLСтруктуру нельзя писать/читать в/из bin-файла как единый объект. Надо работать с каждым полем отдельно.
Есть 2 варианта:
1. Работать с полями переменной длины сохраняя перед полем его длину (например), или в заголовке файла. Этот вариант "долгий", но подходит для строк любой длины и экономит место;
2. Работать со строками (полями) одинаковой длины, заранее известной. Это быстрый и самый удобный вариант, за исключением избыточности.

Какой выбрать в конкретном случае решает программист. Варианта "чтобы и строки разной длины и чтобы читалось сразу всё" нет.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580320
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По выбору контейнера: думаю надо использовать РАЗНЫЕ map при записи и чтении bin- файла. В первом случае ключом будет текстовая строка, а значением- индекс (так можно будет легко найти уже добавленное в индекс значение, чтобы избежать дублирования). При записи файла все наоборот: ключом будет индекс (указанный в сохраненной структуре), а значением будет текстовая строка.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580322
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я потихоньку из текстовых файлах создаю БД... Может в эту сторону лучше копать?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580323
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

Возможно, для твоей задачи вполне подойдет SQL))
Может, не надо заморачиваться?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580324
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЯ потихоньку из текстовых файлах создаю БД... Может в эту сторону лучше копать?Я не успел)
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580327
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlekseySQLПо выбору контейнера: думаю надо использовать РАЗНЫЕ map при записи и чтении bin- файла. В первом случае ключом будет текстовая строка, а значением- индекс (так можно будет легко найти уже добавленное в индекс значение, чтобы избежать дублирования). При записи файла все наоборот: ключом будет индекс (указанный в сохраненной структуре), а значением будет текстовая строка.

UPDATE:
По выбору контейнера: думаю надо использовать РАЗНЫЕ map при записи и чтении bin- файла. В первом случае ключом будет текстовая строка, а значением- индекс (так можно будет легко найти уже добавленное в индекс значение, чтобы избежать дублирования). При чтении файла все наоборот: ключом будет индекс (указанный в сохраненной структуре), а значением будет текстовая строка.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580329
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМожет в эту сторону лучше копать?

Копай в сторону "а назачем я это вообще делаю?"

В зависимости от ответа на этот вопрос направления копания будут разными. От перехода на
потоковые алгоритмы обработки информации до создания индекса в памяти. Конвертирования
текстовых файлов в двоичные между ними почти наверняка не будет, ибо толку от него мало.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580356
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL1. Все структуры разного размера, поэтому каждую структуру надо писать/читать в/из bin-файла отдельно. Т.е. нельзя записать/считать сразу 10 000 структур из файла.

Можно

Возникает другое предложение: количество значений текстовых данных ограничено, поэтому можно создать отдельный файл с "Индексом" используемых значений строк, а в структурах хранить только номер индекса. Какой контейнер выбрать, чтобы осуществлялся быстрый поиск как по ключу (при чтении bin-файла), так и по значению (при записи bin- файла)?

Может я что-то неправильно понял и есть более простое решение?
Развитие такой идеи возвращает тебя в далекие 80-е и 90-е когда "базы данных на файлах"
были популярны. Это dBase, Paradox, e.t.c. Кажется даже длинные строки в них именно так и хранились.
Короткие - хардкодились именно как поля фиксированного размера.

Собственно, цитата которую ты привел о том что сериализатор - враг, требует обсуждения.
Если враг - то в чём? В сложности разработки? В оверхеде?

Твои идеи по поводу оптимизации сохранения бинарных данных в файлах (ОСБДФ) как я уже
писал - устарели на 30 лет и тебе придётся во первых вступать в противостояние со "старичками"
которые уже "плавали" в этих технологиях и "знают" что почем. А новичкам соотв. будет пофиг
ибо для них не видно никакого профита кроме усложнения процесса разработки.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580481
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonAlekseySQL1. Все структуры разного размера, поэтому каждую структуру надо писать/читать в/из bin-файла отдельно. Т.е. нельзя записать/считать сразу 10 000 структур из файла.

Можно

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

maytonВозникает другое предложение: количество значений текстовых данных ограничено, поэтому можно создать отдельный файл с "Индексом" используемых значений строк, а в структурах хранить только номер индекса. Какой контейнер выбрать, чтобы осуществлялся быстрый поиск как по ключу (при чтении bin-файла), так и по значению (при записи bin- файла)?

Может я что-то неправильно понял и есть более простое решение?
Развитие такой идеи возвращает тебя в далекие 80-е и 90-е когда "базы данных на файлах"
были популярны. Это dBase, Paradox, e.t.c. Кажется даже длинные строки в них именно так и хранились.
Короткие - хардкодились именно как поля фиксированного размера.

Например, 1с версии 7.7 хранила свои данные в dbf- файлах (продукт сдал позиции 8.х версиям примерно 10 лет назад). Строки хранились кратными 80 (например, если юзер ввел комментарий документа на 79 символов,то использовалась одна запись, а если накропал 81 символ, то тут уже было не обойтись без двух записей). В новых версиях есть строка неограниченной длины, способ её хранения зависит от СУБД...
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580482
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRockВозможно, для твоей задачи вполне подойдет SQL))
Может, не надо заморачиваться?

Решил вернуться к идее использования map в качестве индекса, потому что полученная выборка из БД потребует дальнейшей конвертации в объекты С++ (и как следствие- потеря эффективности). Я ищу решение максимальное для скорости чтения данных, поэтому этот вариант не айс.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39580495
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLYuRockВозможно, для твоей задачи вполне подойдет SQL))
Может, не надо заморачиваться?

Решил вернуться к идее использования map в качестве индекса, потому что полученная выборка из БД потребует дальнейшей конвертации в объекты С++ (и как следствие- потеря эффективности). Я ищу решение максимальное для скорости чтения данных, поэтому этот вариант не айс.
Изобретаешь In-Memory DBMS ? :)
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581143
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЕсть какие-то симпатичное решения сохранения текстовых данных в бинарных файлах?1) Текстовые данные планируется только читать?
2) Насколько большие файлы?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581220
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadAlekseySQLЕсть какие-то симпатичное решения сохранения текстовых данных в бинарных файлах?1) Текстовые данные планируется только читать?
2) Насколько большие файлы?

1. Сначала 1 раз записать, потом все оставшиеся разы только читать.
2. ~60ГБ csv- файлов.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581682
Я бы все хранил в SQLite. Очень просто и очень удобно. Из минусов, по сравнению с самописным форматом, только скорость линейного чтения, но это уже от задачи зависит.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581700
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы вообще всё оставил в текстовых файлах и применял однопроходные алгоритмы для обработки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581754
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соискатель С++Я бы все хранил в SQLite. Очень просто и очень удобно. Из минусов, по сравнению с самописным форматом, только скорость линейного чтения, но это уже от задачи зависит.

Вот это меня в SQL и напрягает: можно выбирать либо построчно, либо все гаком. А мне надо кусками по 10 000 записей, чтобы оперативка не забилась от всей выборки данных. Конечно, есть и свои плюсики: быстрые отборы, сортировка, но это не моя задача.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581756
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА я бы вообще всё оставил в текстовых файлах и применял однопроходные алгоритмы для обработки.


А у меня и так последовательное считывание строк из тексового файла. Да и дело не столько в считывании данных, сколько в их преобразовании в int, long, bool... Поэтому преобразую в BIN- формат.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581758
Amiri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
struct R
{
    int Number;
    AnsiString Name;
    AnsiString MecTo;
    AnsiString KJIuKyxa;
    AnsiString nac;
    AnsiString gon_nac;
    AnsiString MbIJIo;
    AnsiString uHfa;
    bool exist;
    int kol;
};
 
//--------------Массив типа R------------
R b[5000];
 
//--------------Запись массива в файл-----------
void TFormMain::RtoFile(String name, R *Rec)
{
 
 FILE * pFile;
 AnsiString bufname = name + ".psw";
 pFile = fopen(bufname.c_str(), "wb");
 for(int i = 0 ; i < 5000 ; i++)
 {
  if(Rec[i].exist)
  {
 
   int
    sizeNumber = sizeof(Rec[i].Number),
    sizeName = Rec[i].Name.Length(),
    sizeMecTo = Rec[i].MecTo.Length(),
    sizeKJIuKyxa = Rec[i].KJIuKyxa.Length(),
    sizenac = Rec[i].nac.Length(),
    sizegon_nac = Rec[i].gon_nac.Length(),
    sizeMbIJIo = Rec[i].MbIJIo.Length(),
    sizeuHfa = Rec[i].uHfa.Length(),
    sizeexist = sizeof(Rec[i].exist),
    sizekol = sizeof(Rec[i].kol);
 
   fwrite(&sizeNumber, sizeof(int), 1, pFile);
   fwrite(&sizeName, sizeof(int), 1, pFile);
   fwrite(&sizeMecTo, sizeof(int), 1, pFile);
   fwrite(&sizeKJIuKyxa, sizeof(int), 1, pFile);
   fwrite(&sizenac, sizeof(int), 1, pFile);
   fwrite(&sizegon_nac, sizeof(int), 1, pFile);
   fwrite(&sizeMbIJIo, sizeof(int), 1, pFile);
   fwrite(&sizeuHfa, sizeof(int), 1, pFile);
   fwrite(&sizeexist, sizeof(int), 1, pFile);
   fwrite(&sizekol, sizeof(int), 1, pFile);
 
   fwrite(&Rec[i].Number, sizeNumber, 1, pFile);
   fwrite(&Rec[i].kol, sizekol, 1, pFile);
   fwrite(&Rec[i].exist, sizeexist, 1, pFile);
 
   char buf [1];
 
   strcpy(buf, Rec[i].Name.c_str());
   fwrite(&buf, sizeName, 1, pFile);
 
   strcpy(buf, Rec[i].MecTo.c_str());
   fwrite(&buf, sizeMecTo, 1, pFile);
 
   strcpy(buf, Rec[i].KJIuKyxa.c_str());
   fwrite(&buf, sizeKJIuKyxa, 1, pFile);
 
   strcpy(buf, Rec[i].nac.c_str());
   fwrite(&buf, sizenac, 1, pFile);
 
   strcpy(buf, Rec[i].gon_nac.c_str());
   fwrite(&buf, sizegon_nac, 1, pFile);
 
   strcpy(buf, Rec[i].MbIJIo.c_str());
   fwrite(&buf, sizeMbIJIo, 1, pFile);
 
   strcpy(buf, Rec[i].uHfa.c_str());
   fwrite(&buf, sizeuHfa, 1, pFile);
  }
 }
 fclose (pFile);
}
 
//----------Считывание из файла------------
void TFormMain::RfromFile(String name, R Rec[])
{
 int counter = 0;
 FILE *pFile = NULL;
 AnsiString bufname = name + ".psw";
 pFile = fopen(bufname.c_str() , "rb");
 if(pFile == NULL)
  return;
 for(int i = 0; i < 5000; i++)
 {
    int
    sizeNumber = 0,
    sizeName = 0,
    sizeMecTo = 0,
    sizeKJIuKyxa = 0,
    sizenac = 0,
    sizegon_nac = 0,
    sizeMbIJIo = 0,
    sizeuHfa = 0,
    sizeexist = 0,
    sizekol = 0;
 
   fread(&sizeNumber, sizeof(int), 1, pFile);
   fread(&sizeName, sizeof(int), 1, pFile);
   fread(&sizeMecTo, sizeof(int), 1, pFile);
   fread(&sizeKJIuKyxa, sizeof(int), 1, pFile);
   fread(&sizenac, sizeof(int), 1, pFile);
   fread(&sizegon_nac, sizeof(int), 1, pFile);
   fread(&sizeMbIJIo, sizeof(int), 1, pFile);
   fread(&sizeuHfa, sizeof(int), 1, pFile);
   fread(&sizeexist, sizeof(int), 1, pFile);
   fread(&sizekol, sizeof(int), 1, pFile);
 
   fread(&Rec[i].Number, sizeNumber, 1, pFile);
   fread(&Rec[i].kol, sizekol, 1, pFile);
   fread(&Rec[i].exist, sizeexist, 1, pFile);
 
   char buf[1];
 
   fread(&buf, sizeName, 1, pFile);
   Rec[i].Name = buf;
 
   fread(&buf, sizeMecTo, 1, pFile);
   Rec[i].MecTo = buf;
 
   fread(&buf, sizeKJIuKyxa, 1, pFile);
   Rec[i].KJIuKyxa = buf;
 
   fread(&buf, sizenac, 1, pFile);
   Rec[i].nac = buf;
 
   fread(&buf, sizegon_nac, 1, pFile);
   Rec[i].gon_nac = buf;
 
   fread(&buf, sizeMbIJIo, 1, pFile);
   Rec[i].MbIJIo = buf;
 
   fread(&buf, sizeuHfa, 1, pFile);
   Rec[i].uHfa = buf;
 }
 fclose(pFile);
}
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581763
Amiri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581772
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLДа и дело не столько в считывании данных, сколько в их преобразовании в int, long, bool...

А в чём проблема-то? Считал строку, преобразовал, обработал, выкинул. И память не
забивается и быстродействие высокое.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581781
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЕсть набор больших текстовых файлов, которые для ускорения работы я конвертирую в удобный формат: парсю отдельные строки, укладываю преобразованные значения в поля в структуры, структуры укладываю в массив, а массив записываю в
базу данных.....
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581786
AlekseySQLСоискатель С++Я бы все хранил в SQLite. Очень просто и очень удобно. Из минусов, по сравнению с самописным форматом, только скорость линейного чтения, но это уже от задачи зависит.

Вот это меня в SQL и напрягает: можно выбирать либо построчно, либо все гаком. А мне надо кусками по 10 000 записей, чтобы оперативка не забилась от всей выборки данных. Конечно, есть и свои плюсики: быстрые отборы, сортировка, но это не моя задача.

Не понял, что вас напрягает. Выбирайте по 10 000 записей. Можно даже проиндексировать эти группы.
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39581815
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amiri
Код: plaintext
1.
2.
3.
   fwrite(&sizegon_nac, sizeof(int), 1, pFile);
...
   fread(&sizenac, sizeof(int), 1, pFile);

С учетом того, что автор собирается один раз сгенерить файл, а потом только читать его (может быть даже на разных платформах), насколько красиво завязываться на изменчивую длину int-а в таком случае?
...
Рейтинг: 0 / 0
Как сохранять строки в бинарных файлах?
    #39582134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я взял несколько постов Алексея и просто объединил их в один. И вот какая картина у меня в голове получается.

Есть набор больших текстовых файлов, которые для ускорения работы я конвертирую в удобный формат: парсю отдельные строки, укладываю преобразованные значения в поля в структуры, структуры укладываю в массив, а массив записываю в бинарный файл :)

Как быть с текстовыми полями:
1. Если в структуре объявить поле типа char [250], то это будет очень расточительно (не всем значениям нужна такая длина).
2. Если в структуре объявить поле std::string, то структура перестанет быть POD- объектом и работать с ней как с последовательностью битов уже будет нельзя. Как следствие отваливается возможность сохранения данных в файл.

Есть какие-то симпатичное решения сохранения текстовых данных в бинарных файлах?

1. Сначала 1 раз записать, потом все оставшиеся разы только читать.
2. ~60ГБ csv- файлов.

Судя по постановке - это типичная bigdata. У нас есть неструктурированные данные. Один
раз сгенерированы и мы их только читаем. Как с ними быть? Всё идет не от структур данных
типа char[250] или string. Все это шелуха и на больших данных не имеет значения. А от того
какие отчоты надо с этого получить. Далее - по технологиям,
Spark (Python/Java/Scala), Hadoop (C++/Java/Python) и различные коробочные бизнес-продукты для анализа
данных (Витрины данных/DataMart/OLAP). В последнем - я не глубокий специалист. Пускай коллеги накидают
ссылок если знают. Но убежден что таких продуктов - масса. И они замечательно справляются
с такими задачами.

Из витрин данных я использовал Qliki, но не уверен что qliki проглотит 60Гб. Надо почитать про
limitations.

Возможно автор просто подменяет "нужное" интересным и хочет порабоать с C++ и данными - ну дык это его
личное пожелание. Мы естественно помешать не сможем. Дай бох.
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сохранять строки в бинарных файлах?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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