The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Отчёт о развитии FreeBSD за первый квартал 2020 года"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]

. "Отчёт о развитии FreeBSD за первый квартал 2020 года" +/
Сообщение от Аноним (159), 15-Апр-20, 21:33 
Так ведь задача была добавить в жсон, потому что это "бд" на диске -- жсон. Всё может быть интересней, когда этот файл модифицируется в несколько потоков, т.е. его надо перечитывать при каждом добавлении (в практическом коде такой вариант есть, воркеры независимы -- нужна только блокировка в момент записи, чтобы избежать гонки в паре мест, а данные кто успел того и тапки, они в случае невероятного совпадения обновятся последним вошедшим). Да и я тут уже нарвался пару раз на ограничения передаваемых по трубе данных… Ну, можно вроде такого, сразу добавить все новые данные на диск

jq>"j2.json"<<<$(jq --sort-keys -c '. += {"key1": {"item1":["value1"],"item2":["value2"]},"key2": {"item1":["value1"]}}'<j.json)

Только тут ведь как, jq же их все генерирует, эти элементы, и обновляет при необходимости. Ну, чтобы там не было дубликатов, перезаписывает значения, и всё остальное. Я же не буду это в баше делать... Это придётся костылить массивы и прочее, потом каждый элемент хэштейбла будет хэштейблом. который будет содержать ареи и так далее… Хотя… Не, чёт я прогнал, в баше так будет сделать нельзя. Ну, арей хештейблу не присвоишь, только строку. Это городить eval с овер 100500 (буквально) переменных, этот способ ой ой ой какой костыльный, переменные будут называться key1item1=(value1 value2), нам надо вести учёт этих переменных, потом как-то проверять есть ли они вообще, перебирать через eval это всё по 5 раз, посимвольно сравнивать строки миллиарды раз, и вообще это всё очень неприятно. Тут и баш начнёт тормозить. Средствами баша это нормально не решается, скорее всего.

А зачем в несколько потоков? Это разные процессы, и они добавляют данные параллельно… Есть логика сравнения времени изменения и синхронизации. Конечно, вариант висеть демоном в питоне, но тогда я опять же ограничен синхронизацией, трубой, 1 потоком, и постоянной сериализацией/десериализацией. Наверное, и не скалируется вообще, и этот многогигабайтный питон висящий фоном… Немного быстрее будет конечно, хотя бы потому что питон может в сложные структуры вроде вложенных хэштейблов, но.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Отчёт о развитии FreeBSD за первый квартал 2020 года, opennews, 13-Апр-20, 16:16  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру