Тема: Файлова система як БД. Відображення та маніпуляція файлами.
Вітаннячка.
Я, чисто для себе, хочу розробити бота для голосового чату, котрий ми записував все те, що кажуть користувачі. Сам процес запису вже є, але мені потрібно покращити файлову структуру для зберігання аудіо файлів.
Поточний функціонал:
Наразі всі файлики (mp3) зберігаються просто в директорії, і вони мають ім'я в форматі
[Назва голосового каналу] [ім'я учасника] [id учасника] [дата] [час]
(час в форматі [година]-[хвилина]-[секунда] )
Кожен такий файлик створюється, навіть якщо користувач натиснув кнопку, сказав - "привіт!", та відпустив кнопку - це вже 1 файлик.
Опис завдання:
Для реалізації цього функціоналу я використовую nodejs, і я б хотів додати веб-інтерфейс для того, аби можна було б:
1. Прослухати необхідний звуковий файл в браузері
2. Сортувати та фільтрувати аудіо файли за:
2.1 іменем користувача
2.2 датою та часом
2.3 назвою голосового каналу
3. Зліплювати декілька mp3 файлів в один, та можливість прослухати його та завантажити.*
*мається на увазі, що на каналі може вестись певна розмова, і прослуховувати кожну репліку окремо буде незручно, тому варто було б зліпити файли за деякий перідо часу таким чином, аби вихідний аудіо-файл представляв собою повну розмову декількох учасників, зі збереженням таймінгів.
Питання:
Яким чином краще зберігати ті файлики? Я б міг створювати директорії під канали і спускатись аж до днів, тобто структура була б така
- Назва каналу
-- Ім'я користувача та id
--- Дата
---- а тут вже йдуть самі файлики в імені котрих записаний лише час
З такою структурою було б зручно отримувати всі файлики від певного користувача, або всі файлики за певний день, але сортування файлів лише за датою потребуватиме входження в кожну таку директорію і витягування всіх файлів, а потім їх сортування, і мені здається, що зберігати файлики саме в такій структуруі - це не найкращий варіянт.
Можна було б записувати файлики прямо в базу даних, але кожен такий файл може бути як маленьким, так і до декількох мегабайт, і разом з файлом все одно треба буде записувати інформацію про нього.
Я ще думав, а що - якщо файли записувати так само - просто в одну директорію, а в бд записувати дані про певний файл включно зі шляхом до цього файлу, і потім, використовуючи бд можна сортувати і фільтрувати то все, як захочеться, і в кінці просто брати та й використовувати файлики, шляхи до котрих будуть в тому результаті, котрий поверне бд після всіх операцій.
При цьому варто зауважити, що створення файликів може бути постійно, і в цей момент може виникнути необхідність прочитати їх, тобто, воно входить, і виходить одночасно.
До речі, для зліплення файликів мені ж буде мало точності до секунд? Треба до мілісекунд?
І чим мені то зліплювати? В контейнері вже буде ffmpeg, воно ж може зліплювати аудіофайли?
Що порадите?