Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись во множество файлов / 25 сообщений из 32, страница 1 из 2
27.05.2014, 12:00
    #38653011
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Подскажите советом.
Необходимо писать данные сразу в 1000 файлов, как лучше организовать. Вот код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
for(int g=0; g<3000;g++) 
                {
                    l = g % 1000;
                    var file = new FileStream("file"+l, FileMode.Append, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete | FileShare.Read | FileShare.Write);
                    Serializer.Serialize(file1, aa);
                    file.Close();
                }


В каждом цикле открывает файл, записывает и закрывает и это все будет крутится в бесконечном цикле.
Мой вариант считаю не верным т.к. приходится постоянно открывать и закрывать файл, можно ли иначе?
Притом, что в другом потоке могут эти файлы считывать.
...
Рейтинг: 0 / 0
27.05.2014, 12:29
    #38653057
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
А как можно записать в файл не открыв его? Делайте запрет на чтение/запись если файл используется и ждите пока "освободится"
...
Рейтинг: 0 / 0
27.05.2014, 12:29
    #38653058
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
База данных, например?

Вообще, не хватает информация. Что за данные пишутся, кто пишет, кто читает, как долго читает...
...
Рейтинг: 0 / 0
27.05.2014, 12:38
    #38653076
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
НахлобучБаза данных, например?

Вообще, не хватает информация. Что за данные пишутся, кто пишет, кто читает, как долго читает...
Как раз пишу логику в замен базы данных, чтоб оптимизировать ресурсы.
Данные это показания с промышленных датчиков, 1000 уникальных датчиков с дискретностью 500ms, под каждый датчик файл. Читает эти файлы другой поток.
Сейчас придумал кое что, держу массив с открытыми файлами.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
FileStream[] f= new FileStream[1000];
                for(int g=0; g<3000;g++) 
                {
                    l = g % 1000;
                    if(f[l]==null)
                        f[l]= new FileStream("file"+l, FileMode.Append, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete | FileShare.Read | FileShare.Write);
                    Serializer.Serialize(f[l], aa);
                    f[l].Flush();
                }


Уже лучше 600 мс, нов се равно много.
...
Рейтинг: 0 / 0
27.05.2014, 12:39
    #38653081
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Это какое то безумие, Вы что желаете, из одного потока передать данные на обработку в другой поток?
...
Рейтинг: 0 / 0
27.05.2014, 12:42
    #38653091
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarКак раз пишу логику в замен базы данных, чтоб оптимизировать ресурсы.
Тогда прямая дорога в RabbitMQ, например.

Поставщик заталкивает данные в очередь, а потребители (один или несколько) из нее читают и обрабатывают.
...
Рейтинг: 0 / 0
27.05.2014, 12:43
    #38653095
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarНахлобучБаза данных, например?

Вообще, не хватает информация. Что за данные пишутся, кто пишет, кто читает, как долго читает...
Как раз пишу логику в замен базы данных, чтоб оптимизировать ресурсы.
Данные это показания с промышленных датчиков, 1000 уникальных датчиков с дискретностью 500ms, под каждый датчик файл. Читает эти файлы другой поток.
Сейчас придумал кое что, держу массив с открытыми файлами.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
FileStream[] f= new FileStream[1000];
                for(int g=0; g<3000;g++) 
                {
                    l = g % 1000;
                    if(f[l]==null)
                        f[l]= new FileStream("file"+l, FileMode.Append, FileAccess.Write, FileShare.ReadWrite | FileShare.Delete | FileShare.Read | FileShare.Write);
                    Serializer.Serialize(f[l], aa);
                    f[l].Flush();
                }



Уже лучше 600 мс, нов се равно много.
А писать данные с каждого датчика в отдельный файл - это наилучший вариант?
...
Рейтинг: 0 / 0
27.05.2014, 12:51
    #38653123
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Belavik, Да, таким образом я файл размещаю в смысловые директории и таки образом экономлю 12 байт с каждой записи...Если все в один писать, то тогда лучше все разместить в БД только размер данных уже получится в 2 раза больше...
а это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...
...
Рейтинг: 0 / 0
27.05.2014, 12:53
    #38653129
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Где-то в степиЭто какое то безумие, Вы что желаете, из одного потока передать данные на обработку в другой поток?
Один поток пишет файлы, архивирует. Другой поток или потоки читают эти файлы (запросы пользователей).
...
Рейтинг: 0 / 0
27.05.2014, 12:54
    #38653131
Belavik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarBelavik, Да, таким образом я файл размещаю в смысловые директории и таки образом экономлю 12 байт с каждой записи...Если все в один писать, то тогда лучше все разместить в БД только размер данных уже получится в 2 раза больше...
а это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...
И все эти данные всегда должны быть доступны для чтения, или какая-то часть становится неактуальной, устаревает? Какой средний размер файла?
...
Рейтинг: 0 / 0
27.05.2014, 12:54
    #38653133
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Нахлобуч, почитаю, чет не слышал о этой платформы.
...
Рейтинг: 0 / 0
27.05.2014, 12:58
    #38653148
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
BelavikldarBelavik, Да, таким образом я файл размещаю в смысловые директории и таки образом экономлю 12 байт с каждой записи...Если все в один писать, то тогда лучше все разместить в БД только размер данных уже получится в 2 раза больше...
а это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...
И все эти данные всегда должны быть доступны для чтения, или какая-то часть становится неактуальной, устаревает? Какой средний размер файла?
Файлы еще делятся по времени, по суткам, каждый файл ~2 метра
...
Рейтинг: 0 / 0
27.05.2014, 13:00
    #38653153
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarBelavik, Да, таким образом я файл размещаю в смысловые директории и таки образом экономлю 12 байт с каждой записи...Если все в один писать, то тогда лучше все разместить в БД только размер данных уже получится в 2 раза больше...
а это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...
это кто так поставил задачу? старший?
имхо, зачем вам вся история с такой дискретностью? кто ее будет читать?
...
Рейтинг: 0 / 0
27.05.2014, 13:16
    #38653176
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarНахлобуч, почитаю, чет не слышал о этой платформы.
Заодно почитай как устроен Graphite и Whisper . Хранить прошлогодние данные с точностью до секунды вряд ли надо.
...
Рейтинг: 0 / 0
27.05.2014, 13:25
    #38653191
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarа это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...

Отслеживать последнее записанное в БД значение датчика, и если новое значение превысило некий порог, то записать его
...
Рейтинг: 0 / 0
27.05.2014, 13:45
    #38653234
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Я мысленно представил себе ( время стремится в бесконечность)
Россия встала с колен, люди освоили Марс, половина России покрыта сплошными датацентрами, все так же крутятся
эти 1000 датчиков и пишут в файлы, только размеры файлов уже под тысячи петабайтов, половина россиян обслуживаю эти центры
в которых размещаются эти файлы, эта задача ( запись в файл) дала импульс энергетике появилось много атомных и гидро электростанций для питания этих центров, остальная половина качает нефть, что бы ее продать а на вырученные деньги построить новые центры...
...
Рейтинг: 0 / 0
27.05.2014, 13:45
    #38653235
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Где-то в степиldarBelavik, Да, таким образом я файл размещаю в смысловые директории и таки образом экономлю 12 байт с каждой записи...Если все в один писать, то тогда лучше все разместить в БД только размер данных уже получится в 2 раза больше...
а это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...
это кто так поставил задачу? старший?
имхо, зачем вам вся история с такой дискретностью? кто ее будет читать?
Для анализа дынных, нужно около 6 месяцев хранить. Некоторые возможно и не понадобятся.
...
Рейтинг: 0 / 0
27.05.2014, 13:48
    #38653242
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Где-то в степиЯ мысленно представил себе ( время стремится в бесконечность)
Россия встала с колен, люди освоили Марс, половина России покрыта сплошными датацентрами, все так же крутятся
эти 1000 датчиков и пишут в файлы, только размеры файлов уже под тысячи петабайтов, половина россиян обслуживаю эти центры
в которых размещаются эти файлы, эта задача ( запись в файл) дала импульс энергетике появилось много атомных и гидро электростанций для питания этих центров, остальная половина качает нефть, что бы ее продать а на вырученные деньги построить новые центры...
Фантазия конечно на высшем уровне. Если брать СКАДА системы, то все они хранят сырые данные и даже с меньшей дискретностью.
...
Рейтинг: 0 / 0
27.05.2014, 13:50
    #38653245
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Pallarisldarа это > 5 миллиардов записей в месяц, 116 Гигабайт в месяц или 57 Гигабайт...

Отслеживать последнее записанное в БД значение датчика, и если новое значение превысило некий порог, то записать его
Кстати тоже обдумываю этот вариант. А есть еще методы по сжатию?
...
Рейтинг: 0 / 0
27.05.2014, 13:51
    #38653249
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarКстати тоже обдумываю этот вариант. А есть еще методы по сжатию?

В течении минуты вычислять среднее значение и записывать его в конце минуты, например
...
Рейтинг: 0 / 0
27.05.2014, 13:55
    #38653261
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldar,
биржевые данные, минимальная единица - тик.
Но зачем хранить данные с датчиков? так часто.
достаточно и раз в минуту или пять минут
если рассматривать с точки зрения аварийности, должны быть критерии аварийности данных и писать только
при их наличии, другой вопрос срезы по данным - как говорит П. - замаетесь пыль глотать бегая по файлам выколупывая значения..
...
Рейтинг: 0 / 0
27.05.2014, 14:08
    #38653293
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarКстати тоже обдумываю этот вариант. А есть еще методы по сжатию?Run-Length Encoding.

Но вообще -- очередь и даунсамплинг/агрегирование данных.
...
Рейтинг: 0 / 0
27.05.2014, 14:13
    #38653303
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Где-то в степи,
Для большинства задач вы правы, но иногда, это в редко конечно нужны именно с маленькой дискретностью, к примеру отслеживать скачки вибрации или ток с напряжением.
...
Рейтинг: 0 / 0
27.05.2014, 14:18
    #38653312
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
ldarГде-то в степи,
Для большинства задач вы правы, но иногда, это в редко конечно нужны именно с маленькой дискретностью, к примеру отслеживать скачки вибрации или ток с напряжением.
Вы себе как это представляете - отследить вибрацию за последний месяц.
Обычно с малой дискретностью - на малых периодах, или на периодах с экстремальными величинами ( аварийная ситуация)
...
Рейтинг: 0 / 0
27.05.2014, 14:28
    #38653324
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись во множество файлов
Где-то в степи,
Вы правы, за месяц не нужно просматривать, а только за определенные периоды.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись во множество файлов / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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