О, мальчик, навязчивый, основанный на мнении вопрос!
У меня около 5 лет опыта работы с pouchDB, немного с SQLite. У меня есть лишь поверхностный опыт работы с RealmDB - я опробовал его и решил, что он не подходит для моих гибридных / мобильных нужд.
pouchDB превосходит по одной области - синхронизация / репликация, как будто она большая брат CouchDB. Обеспечение взаимодействия с автономной базой данных, которая синхронизируется с удаленной базой данных, является огромным для многих мобильных приложений. pouchDB - это схема без использования JSON документов. С pouchDB вы можете выбирать между несколькими хранилищами данных через адаптеры. Поскольку для вашего размера данных могут быть проблемы с квотой 1 , правильным выбором, вероятно, будет адаптер SQLite. pouchDB не поддерживает полнотекстовый поиск.
SQLite - это то, что подразумевается под его именем - реляционная база данных, требующая схемы. Преимущество SQLite заключается в поддержке платформы, а размер базы данных не подвержен влиянию квот, таких как веб-хранилище (например, IndexedDB). SQLite поддерживает полнотекстовый поиск, и приложения могут развертываться с использованием постоянной базы данных.
Между pouchDB и SQLite лежит RealmDB - это объектная база данных на основе схемы, которая поддерживает синхронизацию / репликацию. Как и pouchDB, он не поддерживает полнотекстовый поиск.
Теперь ваши требования
- Поиск объекта по id
- 300k stati c text
- полнотекстовый поиск
Я читаю 'stati c', что означает неизменный.
Поскольку ваши данные не изменяются, и полнотекстовый поиск требуется, pouchDB и RealmDB не будет хорошим выбором. Если существует необходимость в улучшении, удалении или добавлении данных, то это будет иметь смысл, поскольку изменения данных на одном сервере будут реплицировать изменения в локальной базе данных, практически беспрепятственно.
SQLite может быть разумный выбор, поскольку он поддерживает поиск, и с помощью приложения можно развернуть постоянную базу данных. Тем не менее, SQLite может работать медленно в гибридных приложениях.
Итак,
- pouchDB и RealmDB будут массовым перебором и не подходят.
- SQLite прибавит немало сложности .
Для ваших конкретных c требований я бы остался на вашем пути, хотя у меня есть забота Похоже, что flexsearch загружает свой индекс в память - если его производительность возвращает некоторое наказание, то SQLite с возможностью развертывания постоянной базы данных и предоставлением средства поиска может оказаться разумным компромиссом по сравнению со сложностью.
Удачи!
1 Головная боль по квоте