powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Бинарная упаковочка.
25 сообщений из 54, страница 1 из 3
Бинарная упаковочка.
    #39910623
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сет документов. Имеет вид.

Код: xml
1.
2.
3.
document-01.csv.gz
document-02.csv.gz
.....



В настоящий момент он валяется россыпью на Amazon.S3. По 100 - 1000 штук в каталоге.

Необходимо объединить их в упаковочку *.pak.

Нужно получить такой интерфейс чтения. Считаем количество штук через count. И решаем какой из документов брать.
Внутри у нас есть строгая бизнес-формула которая определяет их имя. За имена можно не париться. Главное что если
их 1000 штук то я могу взять как 0-й inputStream так и 999-й.

Вот по сути такой интерфейс.
Код: java
1.
2.
3.
4.
interface DocumentPack {
    int count();
    InputStream getStream(int position);
}




Хотелось бы также такая что была оптимизация. Что если мы берем 999-й документ то мы не вычитываем всю
упаковочку а делам просто перемотку на 999-й слот. И читаем бинарник оттуда. Здесь я хитро расчитывал
выкурить перформанс за счет AWS Range-Get Requests.

https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html#API_GetObject_RequestSyntax

Упаковочка меняться будет редко. Больше вычитываться.

Посоветуйте библиотечку которая реализовывает этот функционал. Желательно из бесплатных типа apache.* e.t.c.
С Thrift и Protobuf я еще не работал и есть ли там именно такая возможность - не знаю.

Упаковочка нужна не для S3 а для другого функционала который чувствителен к количеству физических файлов
в файловой системе и не выдерживает нашего объема (в штуках).
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910626
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Обернуть всё REST API интерфейсом из двух урлов. Будет просто и понятно.
А сейчас ничего не понятно)
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясню проще. Я мог-бы положить все документы в *.zip архив и вычитывать его целиком.
Собственно это и есть рабочее решение не сейчас. Но я экономлю трафик и время.
И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех
предыдущих.

Так понятнее?
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910629
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
это я сразу понял по интерфейсу
- дай число
- дай документ по номеру
Я не понял что тут готовое искать? Там писать нечего.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910631
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910632
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех
предыдущих.
из зипа можно по имени вытаскивать
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910633
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Напиши.

надо понять что писать.

mayton
В настоящий момент он валяется россыпью на Amazon.S3. По 100 - 1000 штук в каталоге.

- делаем метод ХХХ который нужен бизнесу.
Как назовём?
Код: java
1.
2.
getDOC_by_name(name....
getDOC_by_URI(uri amazon


??
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910634
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех
предыдущих.
из зипа можно по имени вытаскивать

а зачем засовывать если они не в архиве изначально?
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910636
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех
предыдущих.
из зипа можно по имени вытаскивать

Лежит на амазоне. По дефолту GET запрос выкачивает всю упаковочку.

Но если я укажу

Код: java
1.
2.
GET /
Range: bytes=1024-2048



то я выкачаю только нужный файлик. Фрагмент упаковочки.

Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки
которой еще нет и которую я только мечтаю написать.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910640
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как мне вычислить этот грёбаный Range?

Как БД и ОРМ делает. Провести индексацию и построить индексы.
Которые лежат либо на амазоне либо на своём REST API отдельно.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910642
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо дружище за совет. Конешно я кинусь писать свой собственный упаковщик.

Но я с твоего позволения все таки поищу готовые решения. Это ведь инженерный подход? Верно?

Потрачу на это 1 день.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910649
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Конешно я кинусь писать свой собственный упаковщик.

а нельзя сказать что упаковщик = zip архив?
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910650
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
вадя
пропущено...
из зипа можно по имени вытаскивать

Лежит на амазоне. По дефолту GET запрос выкачивает всю упаковочку.

Но если я укажу

Код: java
1.
2.
GET /
Range: bytes=1024-2048




то я выкачаю только нужный файлик. Фрагмент упаковочки.

Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки
которой еще нет и которую я только мечтаю написать.

автоматизация это машина заменяет человека "As is to be"
Как выше ты узнаёшь руками или по телефону или со счётами этот Range?
Поняв это можно автоматизировать самому или найти готовое.
Счас я не понял как ИИ определит что мне надо файл с 15 по 1300 байт.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910654
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Скорее нет.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910659
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Объясню проще. Я мог-бы положить все документы в *.zip архив и вычитывать его целиком.
В конце zip-архив есть "End of Central Directory" (индекс "Central Directory").
Даже если просто объединить gzip-ы в общий файл, то его можно проиндексировать "обратным ходом".
Готовых библиотек, правда, не знаю.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Вот это уже ближе к теме.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910663
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки
которой еще нет и которую я только мечтаю написать.
есть либа на js, позволяет из локального файла извлекать. т.е. читаем часть зипа, и от туда берём нужные координаты
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910664
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
mayton
Необходимо объединить их в упаковочку *.pak.

дак zip или какой то pak?
А если zip то зачем в него паковать чтобы потом доставать?
Вы как то определитесь что зовётся бинарной упаковкой.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910666
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А если zip то зачем в него паковать чтобы потом доставать?
Вы как то определитесь что зовётся бинарной упаковкой.
я так понял это:

mayton
Я мог-бы положить все документы в *.zip архив и вычитывать его целиком.
Собственно это и есть рабочее решение не сейчас. Но я экономлю трафик и время.
И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех
предыдущих.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910671
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
я думаю про zip все знают что там есть содержание или файлы по именам. Поэтому если zip то непонятна фраза:
авторВопрос. Как мне вычислить этот грёбаный Range?
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910672
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скриптик на баше, который складывает файлы в один и отдельно записывает начало и конец очередного файла. Получаем собственный *.pak и отдельно индекс к нему.

Аз есмь теоретик, но выглядит реализуемо.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910673
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
и для zip наверно нужен код бэка а не клиента JS.
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910674
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
Norton commander
copy file1+file2+file3)))
Только чем zip хуже?
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910675
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Norton commander
copy file1+file2+file3)))
Только чем zip хуже?


Наверное, тем, что zip не отвечает на этот вопрос:
mayton

Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки
которой еще нет и которую я только мечтаю написать.


Вот накидал этот самый скриптик на баше. Проверял на *.properties где-то в заброшенных исходниках.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
rm index
rm pack

touch pack

for f in *.properties
do
   oldSize=$(stat --printf="%s" pack)
   cat $f >> pack
   newSize=$(stat --printf="%s" pack)
   echo "$f:$oldSize-$newSize" >> index
done



Получил файл pack со всеми *.properties из каталога и такой index :

Код: sql
1.
2.
3.
4.
5.
de-de.properties:0-13
en-us.properties:13-1771
ja-jp.properties:1771-2383
ru-ru.properties:2383-5122
zh-cn.properties:5122-5135
...
Рейтинг: 0 / 0
Бинарная упаковочка.
    #39910677
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Наверное, тем, что zip не отвечает на этот вопрос:

неужели нужна буквально позиция в байтах и не устраивает готовая либа с позицией по ИМЕНАМ файлов?
Если так то это индексация руками в самом верху треда. Ему не понравилась.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Бинарная упаковочка.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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