|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Есть сет документов. Имеет вид. Код: xml 1. 2. 3.
В настоящий момент он валяется россыпью на Amazon.S3. По 100 - 1000 штук в каталоге. Необходимо объединить их в упаковочку *.pak. Нужно получить такой интерфейс чтения. Считаем количество штук через count. И решаем какой из документов брать. Внутри у нас есть строгая бизнес-формула которая определяет их имя. За имена можно не париться. Главное что если их 1000 штук то я могу взять как 0-й inputStream так и 999-й. Вот по сути такой интерфейс. Код: java 1. 2. 3. 4.
Хотелось бы также такая что была оптимизация. Что если мы берем 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 а для другого функционала который чувствителен к количеству физических файлов в файловой системе и не выдерживает нашего объема (в штуках). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:11 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, Обернуть всё REST API интерфейсом из двух урлов. Будет просто и понятно. А сейчас ничего не понятно) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:28 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Объясню проще. Я мог-бы положить все документы в *.zip архив и вычитывать его целиком. Собственно это и есть рабочее решение не сейчас. Но я экономлю трафик и время. И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех предыдущих. Так понятнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:30 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, это я сразу понял по интерфейсу - дай число - дай документ по номеру Я не понял что тут готовое искать? Там писать нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:36 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех предыдущих. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:41 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Напиши. надо понять что писать. mayton В настоящий момент он валяется россыпью на Amazon.S3. По 100 - 1000 штук в каталоге. - делаем метод ХХХ который нужен бизнесу. Как назовём? Код: java 1. 2.
?? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:43 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя mayton И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех предыдущих. а зачем засовывать если они не в архиве изначально? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 18:50 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя mayton И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех предыдущих. Лежит на амазоне. По дефолту GET запрос выкачивает всю упаковочку. Но если я укажу Код: java 1. 2.
то я выкачаю только нужный файлик. Фрагмент упаковочки. Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки которой еще нет и которую я только мечтаю написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:08 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Как мне вычислить этот грёбаный Range? Как БД и ОРМ делает. Провести индексацию и построить индексы. Которые лежат либо на амазоне либо на своём REST API отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:19 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Спасибо дружище за совет. Конешно я кинусь писать свой собственный упаковщик. Но я с твоего позволения все таки поищу готовые решения. Это ведь инженерный подход? Верно? Потрачу на это 1 день. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:29 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Конешно я кинусь писать свой собственный упаковщик. а нельзя сказать что упаковщик = zip архив? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 20:26 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton вадя пропущено... из зипа можно по имени вытаскивать Лежит на амазоне. По дефолту GET запрос выкачивает всю упаковочку. Но если я укажу Код: java 1. 2.
то я выкачаю только нужный файлик. Фрагмент упаковочки. Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки которой еще нет и которую я только мечтаю написать. автоматизация это машина заменяет человека "As is to be" Как выше ты узнаёшь руками или по телефону или со счётами этот Range? Поняв это можно автоматизировать самому или найти готовое. Счас я не понял как ИИ определит что мне надо файл с 15 по 1300 байт. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 20:29 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Скорее нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 20:46 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Объясню проще. Я мог-бы положить все документы в *.zip архив и вычитывать его целиком. Даже если просто объединить gzip-ы в общий файл, то его можно проиндексировать "обратным ходом". Готовых библиотек, правда, не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 21:16 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Вот это уже ближе к теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 21:20 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Вопрос. Как мне вычислить этот грёбаный Range? Для моей. Кастомной упаковочки которой еще нет и которую я только мечтаю написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 21:49 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя, mayton Необходимо объединить их в упаковочку *.pak. дак zip или какой то pak? А если zip то зачем в него паковать чтобы потом доставать? Вы как то определитесь что зовётся бинарной упаковкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 22:10 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А если zip то зачем в него паковать чтобы потом доставать? Вы как то определитесь что зовётся бинарной упаковкой. mayton Я мог-бы положить все документы в *.zip архив и вычитывать его целиком. Собственно это и есть рабочее решение не сейчас. Но я экономлю трафик и время. И думаю что для 999-го документа в архиве мне не хочется вычитывать содержимое всех предыдущих. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 22:40 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя, я думаю про zip все знают что там есть содержание или файлы по именам. Поэтому если zip то непонятна фраза: авторВопрос. Как мне вычислить этот грёбаный Range? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:04 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Скриптик на баше, который складывает файлы в один и отдельно записывает начало и конец очередного файла. Получаем собственный *.pak и отдельно индекс к нему. Аз есмь теоретик, но выглядит реализуемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:05 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя, и для zip наверно нужен код бэка а не клиента JS. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:05 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Alexander A. Sak, Norton commander copy file1+file2+file3))) Только чем zip хуже? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:08 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
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.
Получил файл pack со всеми *.properties из каталога и такой index : Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:29 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Alexander A. Sak Наверное, тем, что zip не отвечает на этот вопрос: неужели нужна буквально позиция в байтах и не устраивает готовая либа с позицией по ИМЕНАМ файлов? Если так то это индексация руками в самом верху треда. Ему не понравилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 23:41 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Сцепить все файлы через copy + рядом положить сериализованный HashMap из имя_файла - start_pos, length Написать на java быстрее, чем тут в форуме обсуждение идет. PetroNotC Sharp ... Я не понял что тут готовое искать? Там писать нечего. +100500 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 02:59 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, и для zip наверно нужен код бэка а не клиента JS. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 09:52 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, авторЭто конверт, для которого может быть много потоков потоковое видео это в другую степь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 12:06 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, авторЭто конверт, для которого может быть много потоков потоковое видео это в другую степь. Думаешь не взлетит? Или видео - это другая магия? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:15 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, Думаю оверхед. Даже если взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:18 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Ониж пишут https://matroska.org/technical/whatis/index.html - It is NOT a video or audio compression format (video codec) - It is an envelope for which there can be many audio, video and subtitles streams, allowing the user to store a complete movie or CD in a single file. И вот что мне особо интересно https://matroska.org/technical/whatis/index.html Fast seeking in the file .... Selectable subtitle/audio/video streams Нужно попробовать. POC написать. И понять есть ли там понятие хедера со смещениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 14:24 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Нужно попробовать. POC написать. И понять есть ли там понятие хедера со смещениями. Структура gzip изложена в RFC1952 . Совсем небольшой документ. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 20:04 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Нужно попробовать. POC написать. И понять есть ли там понятие хедера со смещениями. Структура gzip изложена в RFC1952 . Совсем небольшой документ. Не подходит. Я не смогу используя Range-request изьять из серединки такого бутерброда нужный мне файл. Вроде-бы в теме топика участники это прояснили. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 20:13 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Из упаковочек. Есть такая штука https://kaitai.io/ Там на неком кросс-языковом языке описывают разные спеки. И среди них я нашел описание vfat, ext2. И либы на разных языках (C++/Java/C#) https://formats.kaitai.io/vfat/index.html https://formats.kaitai.io/ext2/index.html Чем они удобны? Они - простые как дерево. И в них еще не реализован т.н. журнал операций который мне нафик не впал. Но главное что есть некий файлоподобный API. Можно ли из них извлечь Range-атрибуты конкретного файла - ХЗ. Надо проверить. Но из того что я знаю по файловым системам - они при монтировании никогда не сканируются полностью. И структура оглавления у них обычно имеет какую-то фиксированную точку входа. Тоесть есть надежда что я вычитаю туловище моего документа через 3 HTTP-GET. 1) Прочитаем структуру корневого фолдера 2) Прочитаем табличку блочков 3) Прочитаем туловище файла. Возможно тут туловище будет порезано на кусочки. Но .. это уже как бог даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 20:20 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Капец у них сборщик. Ошибся с версией JDK. Считает что надо +1.6 а 11 не видит. Ладно пофиксил. Собрал. Еще больше капец там всё низкоуровневое. Что-то наподобие выхлопа antlr. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 20:50 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Alexander A. Sak Код: sql 1. 2. 3. 4. 5.
Да верно. Я об этом и думал. Только у меня index и файл это одно целое. И я думал о том что индекс должен быть типизированным набором записей. Типа Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 21:17 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, чем не подходит zip + java.nio.file.FileSystem? типа такого: Код: java 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:28 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Victor Nevsky, да не в этом проблема. Я могу изготовить архивы и zip и rar и многие другие через доступные API. У меня - исследовательский вопрос. Какие из них поддержат Range - запросы когда я их положу в Amazon S3 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:42 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, зачем range? Всё равно, range, будете определять по имени файла, а только потом использовать данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:00 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Victor Nevsky mayton, зачем range? Всё равно, range, будете определять по имени файла, а только потом использовать данные. Ну вот у меня есть твой *.zip архив. В нем 1000 файлов документов по 10 мегабайт. Итого 1000 * 10 = 10 гигабайт. Лежит на s3 bucket. Доступен по http. И мне надо из него извлечь скажем 300-й и 600-й файл. Как мне это сделать с твоим архивом? Этих операций - будет много. Извлечений. Это - основной функционал системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:56 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Я чувствую что я где-то ошибся. Неужели моя задача так сложна в постановке? Пожалуй я попрошу модератора ее закрыть. Буду думать сам. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 00:08 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, 1. Если zip то надо знать почему там он и зачем. Прдположим у тебя там не хватает места. Что странно. Тогда выдаешь наружу как из сервлета. Он наружу выдает файлы по MIME. А внутри что хочешь и как зочешь читай. В чем проблема? Постановка твоя хромает. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:22 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, Если основной функционал то ищи по СЭД - системы электронного документооборота. Там хранилище документов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 09:24 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Ну вот у меня есть твой *.zip архив. В нем 1000 файлов документов по 10 мегабайт. Итого 1000 * 10 = 10 гигабайт. Лежит на s3 bucket. Доступен по http. И мне надо из него извлечь скажем 300-й и 600-й файл. Как мне это сделать с твоим архивом? пока я вижу только одну проблему - как определить длину этого "каталога"в зипе (но только потому, что не знаю структуру зипа). ещё раз - эта реализация есть на js и работает быстро, весь зип читать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 10:57 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Можешь дать пример этого юзкейса? Я в js не знаток поэтому тамошних либ не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 13:50 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, Я давал в моей теме, где ты просил js. Про мой вопрос к ваде. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:01 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Я в js не знаток поэтому тамошних либ не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:32 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Не подходит. Я не смогу используя Range-request изьять из серединки такого бутерброда нужный мне файл. Цепочка бутербродов "заголовок, данные, трейлер" позволяет построить индекс, а индекс позволяет извлечь любой бутерброд элемент цепочки. В zip-архиве будут отличаться детали, но не принцип. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 18:53 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
вадя mayton Я в js не знаток поэтому тамошних либ не знаю. Увы нет. Я не смогу это использовать пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 21:59 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Не подходит. Я не смогу используя Range-request изьять из серединки такого бутерброда нужный мне файл. Цепочка бутербродов "заголовок, данные, трейлер" позволяет построить индекс, а индекс позволяет извлечь любой бутерброд элемент цепочки. В zip-архиве будут отличаться детали, но не принцип. Я с живейшим интересом вас слушаю. Но беда в том что я по проекту щас занят 5 вещами сразу. По этой теме мне нужен какой-то POC. Ввиду низкого приоритета - пока отложим. Я мало знаю про архивные форматы. Надо сначала на уровне спек понять есть ли там это вообще. И потом найти API в реализации Java. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 22:01 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton Я не смогу это использовать пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 22:44 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
Все отбой. Поговорили с бизнесом. Те - против упаковок. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 14:54 |
|
Бинарная упаковочка.
|
|||
---|---|---|---|
#18+
mayton, Замечательно. Я использовал упаковку когда была причина. Причем дурацкая. На клиенте невозможно выбрать сразу несколько фото для загрузки на сервер. В стандарте HTML5. Идиотизм. Поэтому упаковывал в zip, вызывал openDialog ОДИН РАЗ потом обратно распаковывал чтобы отправить на сервер по одному, а не в контейнере. То есть была причина контейнеризации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 15:11 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120960]: |
0ms |
get settings: |
21ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
965ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 1427ms |
0 / 0 |