Вопрос или проблема
Я ищу решение для файловой базы данных, где оригинальные данные находятся в формате csv.
Ключевая информация:
- Один полный набор данных – это статическая коллекция файлов. Тем не менее, со временем мне понадобится несколько наборов данных.
- Файлы dat не имеют зависимостей (отношений) друг от друга, поэтому решения без SQL могут подойти здесь.
- Общий размер набора данных может составлять 1-4 ГБ. Если я разделю набор данных на помеченные данные, я смогу разбить 4 ГБ на максимум 100 МБ файлов. Тем временем в моем решении мне нужно извлекать информацию из многих из этих файлов.
Из области SQL я рассматриваю Sqlite, а из no-sql – MongoDb. Что касается Sqlite, я использовал его с небольшими файлами, и он кажется хорошим кандидатом. Однако я не уверен, как это будет работать, если база данных составит до 4 ГБ. Что касается MongoDb (или решений no-sql), у меня пока нет опыта.
Вопрос
Что бы вы использовали в качестве файловой базы данных в этом случае? В качестве альтернативы, можете ли вы дать некоторые направления, которые помогут мне найти решение?
Придерживайтесь того, что вам знакомо.
Ссылка из раздела “Часто задаваемые вопросы” ведет на страницу ограничений, где сказано
Максимальный размер базы данных
Каждая база данных состоит из одной или нескольких “страниц”. В пределах одной базы данных каждая страница имеет одинаковый размер, но у разных баз данных страницы могут иметь размеры, которые являются степенями двойки в диапазоне от 512 до 65536 включительно. Максимальный размер файла базы данных составляет 2147483646 страниц.
При максимальном размере страницы 65536 байт это соответствует максимальному размеру базы данных приблизительно 1.4e+14 байт (***140 терабайт****, или 128 тебибайт, или 140000 гигабайт, или 128000 гибибайт).
Конечно, вам понадобится жесткий диск на 140 ТБ для этого, но массив RAID может справиться с этим 😉
Ваши 4 ГБ не будут проблемой. Используйте Sqlite
Ответ или решение
Выбор файловой базы данных: SQLite или MongoDB?
Ваша задача заключается в выборе подходящей файловой базы данных для работы с наборами данных в формате CSV, которые вы планируете хранить и обрабатывать. Давайте проанализируем предложенные вами варианты — SQLite и MongoDB, и рассмотрим другие возможные решения.
Контекст задачи
- Статичность данных: У вас есть статические наборы данных без зависимостей между ними, что позволяет использовать NoSQL решения, однако требования к файловой структуре будут сильно повлиять на выбор.
- Объем данных: Каждый набор данных может достигать 4 ГБ, но возможна разбивка информации на меньшие файлы размером до 100 МБ.
- Динамичность: Вам нужно будет работать с несколькими наборами данных, что подразумевает необходимость управления несколькими файлами.
SQLite: Преимущества и ограничения
SQLite — это легковесная реляционная база данных, находящаяся в одном файле, что идеально подходит, если ваши данные могут быть организованы в структурированном виде.
- Скорость и простота: SQLite предоставляет хорошую производительность и низкие накладные расходы, что делает Her удобным выбором для небольших и средних файлов данных.
- Поддержка больших объемов: Как упомянуто в вашей ссылке, максимальный размер базы данных SQLite составляет около 140 ТБ, что позволяет вам с легкостью хранить первоначальные 4 ГБ данных без каких-либо проблем.
- Отсутствие зависимости: Ваши данные не требуют дополнительных зависимостей, что делает работу с SQLite еще более привлекательной.
- Поддержка запросов SQL: Если вам требуется выполнять сложные запросы для анализа данных, SQL будет удобным инструментом для работы с вашими файлами.
В целом SQLite является подходящим выбором для ваших задач, учитывая простоту использования и возможность управления файлами без усложнения архитектуры.
MongoDB: Преимущества и недостатки
MongoDB — это популярная NoSQL база данных, которая ориентирована на хранение документов и может быть подходящей в некоторых сценариях.
- Гибкость схемы: MongoDB лучше подходит для изменяющихся данных, где структура может варьироваться.
- Хранение больших объемов: MongoDB позволяет хранить большие объемы информации, но требует больше ресурсов для управления.
- Отсутствие простоты при работе с файлом: В отличие от SQLite, MongoDB требует установки и настройки сервера, что может несколько усложнить задачу, если ваши данные статичны.
Тем не менее, учитывая, что ваши данные не имеют зависимостей и могут быть разбиты на меньшие наборы, использование MongoDB может быть излишне сложным уроком и более громоздким в вашем случае.
Альтернативные решения
Если вы все же рассматриваете варианты вместо SQLite и MongoDB, посмотрите на следующее:
- CSV библиотеки: Использование библиотек, таких как Pandas (Python) или Dask для работы с CSV файлами, может упростить энергозатраты на обработку данных. Это позволяет вам манипулировать файловыми структурами без необходимости хранения в БД.
- Berkeley DB: Данная база предлагается как альтернатива и может хорошо работать с файловыми структурами, предоставляя некоторые преимущества в производительности.
Заключение
С учетом представленных факторов, SQLite — наилучший выбор для вашей задачи. Он позволяет вам легко управлять статическими наборами данных в формате CSV, обладает превосходной производительностью и достаточной емкостью для хранения больших объемов данных. Приверженность к тому, что вы уже знаете и понимаете — это также важный аспект, который не следует игнорировать, так как это позволит вам быстрее достичь результатов без необходимости освоения новой технологии.
Таким образом, настоятельно рекомендуется интегрировать SQLite в вашу архитектуру данных для легкой, эффективной и стабильной работы.