Какую базу данных выбрать для мобильного приложения
Создавать и управлять персональными базами данных непосредственно с устройства на базе Android поможет Mobi DB — Manage Databases. Средой постоянного хранения пользовательских баз данных (БД), созданных в Mobi DB — Manage Databases, является внутренняя память или SD-карта гаджета, благодаря чему информация будет доступна в любое время и в любом месте, независимо от наличия подключения к интернету. Полноценные клиентские БД для вашего бизнеса или CD/DVD коллекции, книги, рецепты, списки покупок, расходы — Mobi DB поможет создать, управлять и хранить любые базы данных.
Платформа: Android
Версия: 1.0.1.3
Русский интерфейс: Нет
Требования: 4.0 или более поздняя
Категория: Бизнес
Стоимость: Lite-версия – бесплатно, pro-версия – 365 рублей
Дизайн и интерфейс
Первое, на что нужно обратить внимание — приложение не русифицировано. Пользователю, не владеющему английским языком, придётся запастись терпением, чтобы разобраться, что тут к чему. Помогут в этом примеры баз данных, которые СУБД предложит загрузить при первом запуске. Образцы наглядно демонстрируют возможности приложения. Это единственная инструкция, которой не стоит пренебрегать. В дальнейшем примеры можно легко удалить или отредактировать.
Также спасает ситуацию интуитивный интерфейс, благодаря которому преодолеть языковой барьер будет проще. Пользоваться Mobi DB удобно не только на планшете, но и на смартфоне. На главном экране расположены ярлыки всех имеющихся на устройстве баз данных. Таким образом, переход к каждой из них осуществляется буквально в один клик. Приложение поддерживает как портретную, так и альбомную ориентацию. Программа довольно требовательна к ресурсам. Во время составления и редактирования баз данных заряд аккумулятора тает на глазах. Во время тестирования смартфон несколько раз подвисал, но в общем-то Mobi DB работает стабильно. Все БД хранятся на SD-карте, само приложение в системной памяти занимает меньше двух мегабайт.
Несмотря на то, что приложение не русифицировано, кириллические символы поддерживаются и отображаются корректно, поэтому переименовать встроенные БД и любые поля в них не составит особого труда.
Шаблоны
На главном экране приложения имеется кнопка «+», открывающая доступ к предустановленным шаблонам. Их в приложении 19, такой набор впечатляет. К сожалению, и здесь перевод отсутствует, а переименовать их нельзя. Каждый шаблон состоит из определенного набора полей, этот набор, как и названия полей, можно редактировать, что открывает возможность для создания фактически неограниченного количества персональных баз данных.
- Blank/ Бланк – позволяет создать собственный шаблон из имеющегося набора полей;
- Books / Книги;
- СD;
- Class Schedule / Расписание занятий;
- DVD;
- Employees / Сотрудники;
- Expenses / Расходы;
- Movies / Фильмы;
- Orders / Заказы;
- Purchases / Покупки;
- Recipes / Рецепты;
- Salary / Зарплата;
- Sales / Распродажи;
- Shopping list / Список покупок;
- Software / Программное обеспечение;
- Summer Camp / Летний лагерь;
- Tasks / Задачи;
- Vehicle Maintenance / Техническое обслуживание;
- Wine / Вино.
Пользоваться готовыми шаблонами очень удобно, так как они легко редактируются. А вот заполнять поля приходится чаще всего вручную. Например, чтобы добавить обложку к фильму видеотеки, нужно выйти из приложения и скачать её через браузер, заодно узнав всю нужную информацию (дату релиза, актёрский состав и т.д.). Это затрудняет составление БД, тем более, что большинство пользователей уже избаловано возможностью загружать нужную информацию прямо из приложения, которая реализована во многих плеерах.
Базы данных
Представим, что у нас небольшой питомник растений, которые мы продаём. Создадим клиентскую базу данных. Для этого можно использовать предустановленный шаблон, например, Orders / Заказы, а можно создать собственный. Мы выбрали второй вариант, так как набор полей в имеющемся шаблоне не вполне совпадает с нашими нуждами. Нажимаем кнопку «+» на главном и экране и выбираем Blank / Бланк. Программа предложит ввести название БД. После этого открывается визуальный редактор приложения во вкладке «Design».
Для создания полей БД снова нажимаем кнопку «+» - «добавить», открывается список предустановленных в приложении полей. Mobi DB имеет 14 типов полей, которые могут использоваться неограниченное количество раз.
- Text / Текст;
- Decimal number / Десятичное число;
- Integer number / Целое число;
- Checkbox / Кнопка-галочка;
- Date / Дата;
- Time / Время;
- Hyperlink / Гиперссылка;
- Email;
- Phone / Номер телефона;
- Picture / Изображение;
- Rating / Рейтинг;
- Address / Адрес;
- Currency / Валюта;
- Calculated / Расчёт.
С помощью визуального редактора можно менять последовательность полей, их размер, название и описание. Изменения в шаблон вносятся на любом этапе. Пользователю не придётся вбивать всю информацию заново: если нужно добавить дополнительные ячейки, достаточно вставить новое поле в одну из карточек, и оно появится во всей БД — шаблон меняется автоматически.
После создания шаблона можно приступать к заполнению карточек БД. В нашей базе данных мы использовали не все типы полей, имеющиеся в приложении. Некоторые использовали один раз, а такие, как Text / Текст, Checkbox / Кнопка-галочка использовали несколько раз. Таким образом, Mobi DB даёт полную свободу в составлении персональных баз данных — это безусловный козырь приложения.
Ещё одно преимущество Mobi BD — её интеграция с меню телефона и почтовыми приложениями, установленными в смартфоне. Позвонить и написать письмо, можно просто кликнув на соответствующее поле в БД, что очень удобно.
А вот отредактировать на компьютере созданную с помощью Mobi DB базу данных не получится, так как отсутствует клиент приложения для PC. Приложение поддерживает только внутренний Импорт/ Экспорт. Экспорт в формат CSV, поддерживаемый многими офисными программами на ПК, разработчики планируют реализовать в будущем.
Резюме
Mobi DB — Manage Databases позволяет использовать Android-устройства не только для хранения, но и для управления базами данных как в личных, так и в профессиональных целях. Мощный визуальный редактор, возможность создавать собственные шаблоны персональных БД с помощью многочисленных инструментов, реализованных в приложении, делают эту СУБД интересным предложением. Интеграция с электронной почтой и телефоном значительно расширяет способы применения приложения. К сожалению, технические недоработки смазывают впечатление от работы с приложением. Отметим, что это первая версия СУБД, и обновления, исправляющие баги программы, выходят регулярно. Приятно, что создатели Mobi DB предусмотрели возможность протестировать свой продукт. Lite-версия доступна бесплатно, благодаря этому каждый может самостоятельно оценить функционал приложения и принять решение о покупке полной версии.
Плюсы:
- многообразие шаблонов (возможность хранить базы данных разных типов);
- визуальный реактор шаблонов;
- количество полей в шаблоне не ограничено;
- сортировка информации БД по любому принципу и любой графе;
- экспорт/импорт БД (в собственном формате);
- поддержка кириллицы.
Минусы:
- нерусифицированное меню;
- отсутствует возможность экспорта / импорта БД в известных форматах (планируется поддержка CSV);
- отсутствует клиент для PC;
- ручной ввод всех данных.
Mobi DB Lite - Базы данных
Mobi DB – это программа для хранения всех персональных данных в одном месте.
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 4 года назад .
Мне нужно прикрепить базу данных в приложение, но я не знаю, какую выбрать.
Есть старая добрая SQLite и новая современная Realm (я так понял? это самые крутые)
Они полностью отличаются по строению и по подходу работы.
Мне вообще нужно будет сохранять данные с сервера и потом показывать их в GridView .
Каждая ячейка GridView - это отдельный объект, который содержит картинку, несколько текстовых полей и цвет поля background - эти свойства я буду получать с сервера и хранить в базе.
Меня привлекает, как я понял по описанию, то, что с Realm работать намного проще и приятнее, но я не знаю так ли это на самом деле.
И, плюс, мне нужно будет пользоваться несколькими типами фильтров.
То есть одно из требований, чтобы фильтрация выполнялась быстро.
Как выбрать и с чего начать?
- Самая быстрая по скорости
- Ничего не надо подключать
- По скорости немного уступает SQLite, по сравнению с другими ORM.
- Очень удобно работать с данными.
- Есть облачный сервис, напоминающий Firebase realtime database.
- Так как библиотека написана на C++, она тянет за собой нативные либы, которые увеличивают вес приложения.
- По сравнению с SQLite она медленнее.
- Есть свои подводные камни.
Вывод: все зависит от того, какой проект вы пишите, если маленький то SQLite, если большой то лучше Realm. Я также вам советую посмотреть в сторону ObjectBox. Данная библиотека лишена всех минусов. Но на данный момент она в Beta
4,468 1 1 золотой знак 9 9 серебряных знаков 22 22 бронзовых знака Кстати вот да, Greenrobot очень интересоне решение делает, надеюсь у них получится, но различия между предложенными базами не только количественные, но и качественные. Я еще могу предложить вариант с Requery. Библиотека совместима с Rx и android data binding. поддерживает связи many to many Мы на своих проектах используем ActiveAndroid. Очень удобная и быстрая библиотека для работы с SQLite DB. Рекомендую.Разница между Realm и SQLite на самом деле огромна.
Первая no-sql база данных (как например и модный сейчас Firebase) и она работает по качественно другим принципам постороения запросов, формирования структур данных, принципов связывания данных и проч. Запросы осуществляются с помощью методов класса, что сильно ограничивает их гибкость, так же здесь нет такой привычной в SQL-базах вещи, как автоинкрементируемый ID (здесь вообще концепция ID диаметрально противоположна). Взамен она предоставляет удобный доступ к данным в виде объектов и "человеческий" интерфейс взаимодействия. При запросах вы получаете готовые данные, максимально адаптированные к Java-окружению. как по сущности, так и по взаимодействию ( объекты и методы геттеры\сеттеры)
SQLite - класическая sql-база со структурой таблиц с колонками и строками, для извлечения данных используется специальный полноценный язык запросов SQL, который позволяет писать очень сложные выборки, учитывающие связи внутри базы и возможности тут, без преувеличения, безграничны, так же за этот вариант скоость работы, но работать с SQL-базами весьма хлопотно, особенно если вы не специализируетесь на них. Составить сложный запрос и даже правильно разработать структуру БД и ее связи - задачи, достойные отдельного обучения. Плюс к тому, получив выборку предстоит еще один этап связывания данных курсора с выборокой с Java-окружением, а они как бы из разных миров (табличная структура и ООП)
Что выбрать - решать вам, исходя из поставленных в проекте задач.
Мое мнение, если проект позволяет использовать Realm, я бы использовал его, однако есть множество задач, где именно SQL-база с табличной структурой в разы уместнее, то есть все зависит от структуры данных. Так же не последнее значение должна иметь сложность возможных запросов. Realm не в состоянии сделать выборку, например, по полям модели, в которой одно из полей - ссылка на другую модель, откуда нужно взять только одно из значений.
Реальный пример: таблица платежей, в которой одно из полей - ссылка на одно из полей таблицы валют, которая содержит полное название валюты, ее кодовое международное обозначение и символ валюты (как $) и нам нужно в итоговую выборку получить только этот знак доллара.
SQL справится с этим легко одним запросом, а для Realm это непосильная (точнее многоходовая) задача.
Конкретно для описанной вами в вопросе задачи Realm предпочтительное решение.
В этом руководстве я подробно расскажу о том, как использовать базу данных Android SQLite .
Что такое SQLite
Данная СУБД совместима как с Android , так и с iOS , и каждое приложение может создавать и использовать базу данных SQLite . В Android контакты и медиа хранятся и ссылаются на БД SQLite . Она является наиболее используемой СУБД в мире и самым распространенным программным обеспечением . Чтобы узнать о базах данных SQLite как можно больше, посетите официальный сайт SQLite .
Подготовка
Чтобы включить привязку данных в приложении, нужно добавить в файл build.gradle следующий код:
Чтобы использовать как RecyclerView , так и CardView для отображения списков, нужно включить соответствующие библиотеки в разделе зависимостей в файле build.gradle :
Чтобы задействовать все возможности базы данных SQLite , лучше изучить синтаксис SQL .
Описание примера приложения
В нашем Android SQLite примере мы создадим две таблицы: Employer и Employee . Таблица Employee будет содержать ссылку на внешний ключ таблицы Employer . Мы рассмотрим, как вставлять, выбирать, обновлять и удалять строки из таблиц. Я также продемонстрирую, как вывести элементы, выбранные из базы данных SQLite в RecyclerView ( список ) и в Spinner .
У нас есть MainActivity , из которого можно перейти к EmployerActivity ( для работы с таблицей Employer ) или к EmployeeActivity ( для работы с таблицей Employee ):
Классы хранения базы данных SQLite
Классы определяют то, как данные хранятся в базе. SQLite сохраняют значения с помощью пяти доступных классов хранения:
Определение таблиц
Поскольку база данных SQLite является локальной, нужно обеспечить, чтобы приложение создавало таблицы и по мере необходимости сбрасывало их.
Начнем с Android SQLite query создания таблицы Employer , а затем перейдем к EmployerActivity .
Рекомендуется размещать логику создания базы х SQLite в классе. Это облегчает устранение возможных неполадок. Назовем наш класс SampleDBContract :
Мы определяем частный конструктор для SampleDBContract , а затем создаем класс для представления таблицы Employer . Обратите внимание: класс Employer реализует интерфейс BaseColumns . Он предоставляет два столбца в нашей таблице. Это столбец _ID , который будет автоматически увеличиваться при добавлении каждой новой строки. И столбец _COUNT , который может использоваться ContentProviders для возврата количества записей, извлекаемых через запрос. Столбец _COUNT не является обязательным. Строка CREATE_TABLE компилируется в следующий оператор SQL :
На данный момент в нашем Android SQLite примере мы определили схему таблицы Employer .
Создание базы данных с помощью SQLiteOpenHelper
Теперь в нашем примере Android database SQLite задаем для нашей базы данных SQLite имя ( sample_database ). Конструктор вызывает конструктор суперкласса с именем и версией базы данных. В onCreate мы указываем объекту SQLiteDatabase выполнить оператор Employer CREATE_TABLE SQL . Через onUpgrade мы сбрасываем таблицу Employer и создаем ее снова:
Таблица Employer имеет три столбца: name , description и founded_date . Нажатие кнопки сохранения вызывает метод saveToDB() :
В saveToDB() мы получаем ссылку на объект SQLiteDatabase , используя метод getWritableDatabase() из SQLiteOpenHelper . Этот метод создает базу данных, если она еще не существует, или открывает ее, если она уже создана. GetWritableDatabase возвращает объект SQLiteDatabase , который открывает доступ на чтение / запись:
В приведенном выше фрагменте кода есть четыре момента:
- Мы получаем объект SQLiteDatabase , который открывает доступ на запись в базу данных;
- Значения, которые будут храниться в базе данных, помещаются в объект ContentValue с именем столбца в качестве ключа;
- Мы помещаем Date в объект ContentValue , который переводится в класс хранения данных Android SQLite INTEGER ;
- При вставке строки в базу данных с помощью метода database.insert() возвращается идентификатор строки.
Выбор данных из базы данных SQLite
Подобно тому, как мы применили метод getWritableDatabase() , можно вызвать getReadableDatabase() объекта SQLiteOpenHelper для получения объекта SQLiteDatabase , который можно использовать для чтения информации из базы данных. Стоит отметить, что объект SQLiteDatabase , возвращаемый getReadableDatabase() , предоставляет собой тот же самый доступ на чтение / запись в базу данных, который был возвращен функцией getWritableDatabase() , за исключением тех случаев, когда существуют определенные ограничения. Например, файловая система, содержащая заполненную базу данных, и база данных может быть открыта только для чтения.
Метод readFromDB будет запрашивать БД, и возвращать все строки из таблицы Employer , в которых имя или описание из таблицы Employer совпадает со значением, введенным в EditText . А также строки, в которых дата основания компании совпадает со значением, введенным в EditText :
Отображение содержимого объекта Cursor в RecyclerView
Чтобы не беспокоиться о корректных индексах столбцов из метода readFromDB() , примененного выше, мы используем метод getColumnIndexOrThrow() , который извлекает индекс указанного столбца или генерирует исключение, если имя столбца не существует внутри объекта Cursor :
Определение внешних ключей
Обновление SQLiteOpenHelper
На данный момент в Android Studio SQLite у вас должна быть создана таблица Employer и в нее добавлены значения. Если вы не изменяете версию базы данных, новая таблица Employee не будет создана. К сожалению, если вы измените версию через повторный вызов метода onUpgrade() , то таблица Employer будет сброшена. Чтобы предотвратить это, можно закомментировать или удалить оператор drop в методе onUpgrade() и добавить оператор execSQL() для создания таблицы Employee . Поскольку таблица Employee ссылается на таблицу Employer , сначала необходимо создать таблицу Employer :
Отображение данных из запроса SQLite в Spinner
Чтобы создать работника в таблице Employee , пользователю необходимо выбрать соответствующего работодателя в таблице Employer . Для этого можно предоставить пользователю Spinner . Отобразить содержимое Cursor в Spinner довольно просто.
Сначала мы выполняем Android SQLite query , как было описано выше, выбираем только name из Employer и id (queryCols) . Затем создаем экземпляр SimpleCursorAdapter , передавая ему Cursor , массив столбцов для отображения ( adapterCols ) и массив представлений, с помощью которых должны отображаться столбцы ( adapterRowViews ). Затем устанавливаем Spinner Adapter для SimpleCursorAdapter :
Вставка внешнего ключа в базу данных
Выборка данных из базы SQLite с помощью JOIN
Нельзя использовать метод SQLiteDatabase query() для выполнения запроса к нескольким таблицам. Для этого нужно составить собственный SQL-запрос . В приведенном ниже примере запрос определяется в классе SampleDBContract :
Обратите внимание, что в условии WHERE мы используем символ « ? ». Чтобы не нарушить синтаксис SQL нужно определить selectArgs String [] со значениями, которые будут заменять в предоставленном SQL-запросе символ « ? »:
В заключении
Дайте знать, что вы думаете по этой теме статьи в комментариях. Мы крайне благодарны вам за ваши комментарии, лайки, подписки, дизлайки, отклики!
Дайте знать, что вы думаете по данной теме в комментариях. За комментарии, отклики, подписки, лайки, дизлайки низкий вам поклон!
В основе многих приложений лежат те или иные базы данных (БД). Мобильные приложения для Android не исключение.
В Android присутствует поддержка СУБД SQLite поэтому приложения на основе БД для этой ОС чаще всего используют именно её. Разумеется, что если не все, то большинство средств разработки для Android, включая Delphi, также имеют встроенную поддержку этой СУБД.
Создание приложения на основе СУБД SQLite
Рассмотрим пример создания приложения на основе СУБД SQLite.
Для этого создадим простую БД с одной единственной таблицей, которая будет представлять собой просто список видов животных, и поместим БД в папке с проектом.
Для доступа к БД воспользуемся компонентами FireDAC. Поместим на форму компоненты FDConnection, FDQuery и FDGUIxWaitCursor.
Настроим FDConnection для доступа к БД. Для этого установим следующие значения свойств
В свойстве SQL компонента FDQuery напишем простейший запрос.
Этого достаточно для получения данных из БД. Однако эти данные необходимо как-то отображать.
В отличие от VCL в FireMonkey отсутствуют специализированные компоненты для отображения данных из БД (на подобие DBGrid и т.д.). Поэтому для этих целей приходится использовать обычные компоненты и связывать их с БД посредством LiveBindings. Точнее, компонента BindSourceDB.
Для того чтобы отобразить данные из БД воспользуемся компонентом StringGrid.
Поместим на форму компонент BindSourceDB и установим в качестве DataSet компонент FDQuery.
Установим свойство Connected компонента FDConnection и свойство Active компонента FDQuery в значение true. Далее, щёлкнув правой кнопкой мыши на компоненте BindSourceDB, выберем в контекстном меню пункт «Bind Visually…». Откроется визуальный редактор связей LiveBindings (см. скриншот ниже).
LiveBindings позволяет связать с компонентом набор данных, как целиком, так и по отдельности (отдельные поля). Чтобы в StringGrid отображались все поля, свяжем его с набором данных целиком как показано на скриншоте.
Доработка созданного приложения для работы под Android
Созданное выше приложение вполне работоспособно и его можно спокойно запустить на выполнение в среде Windows. Но, если попытаться запустить это же приложение под Android, то ничего не получится. Причина в особенностях этой ОС. Поэтому, перед запуском приложения под Android, его необходимо предварительно подготовить.
Первое, что нужно сделать, это включить файл БД в состав проекта. Тогда файл БД при компиляции будет автоматически включен в состав файла приложения (apk).
Делается это с помощью стандартной процедуры добавления существующего файла в проект. Например, пункт главного меню Project -> Add to Project.
После того как файл БД добавлен нужно сделать так, чтобы приложение при запуске могло его найти в файловой системе Android.
Для этого в главном меню выберем пункт Progect -> Deployment и в открывшейся таблице найдём файл БД. Расположение файла в файловой системе Android указано в графе Remote Path
В данном случае файл БД будет расположен в папке assets\internal\.
Определив расположение файла БД можно прописать путь к нему. Лучше всего это сделать программно в обработчике события BeforeConnection компонента FDConnection, как показано ниже.
Если 20 лет назад выбрать подходящую под проект СУБД было просто, то теперь на рынке несколько сотен вариантов, включая реляционные и графовые БД, NoSQL и NewSQL.
Краткий обзор рейтинговых систем
В качестве источников информации мы использовали три рейтинговые системы:
- DB-Engines Ranking — рейтинг, который учитывает количество запросов в поисковых системах Google и Bing , позиции в Google Trends , упоминания в Stack Overflow и DBA Stack Exchange и другие показатели. На основе анализа формируется итоговый индекс популярности БД, определяющий ее позицию в общем рейтинге.
2. TOPDB Top Database Index — рейтинг, учитывающий частоту поиска каждой БД в Google . Речь о процентном соотношении относительно всех подобных поисковых запросов.
Популярные Open-Source БД на основе рейтинга TOPDB Top Database Index. Популярные Open-Source БД на основе рейтинга TOPDB Top Database Index.3 . Опрос о том, какие технологии используют чаще всего. В 2020 году его провели создатели сайта Stack Overflow среди профессионального IT-сообщества.
Популярные Open-Source БД согласно опросу, проведенному на сайте Stack Overflow среди профессионального сообщества. Популярные Open-Source БД согласно опросу, проведенному на сайте Stack Overflow среди профессионального сообщества.Проанализировав данные трех источников, мы выделили 10 самых популярных Open-Source БД в 2021 году — вот они.
1 место. База данных MySQL
Самая популярная OLTP-система с открытым исходным кодом. Не обеспечивает строгого соответствия стандарту SQL — приоритет отдается простоте и скорости работы. Отличается очень высокой производительностью при операциях чтения. Поддерживает как структурированные (SQL), так и полуструктурированные данные (JSON).
Рекомендуется для задач , где требуется быстрая и простая OLTP-база общего назначения без комплексной внутренней логики:
- веб-сайты,
- платформы электронной коммерции,
- системы управления контентом CMS.
Не рекомендуется для задач, где :
- требуется обработка сложных аналитических запросов и построение OLAP-хранилищ,
- требуются функции объектно-реляционных баз, например перегрузка функций и наследование таблиц.
2 место. PostgreSQL
Следующая по популярности OLTP-база: по сравнению с MySQL она больше соответствует стандарту SQL. Если MySQL в первую очередь ориентирована на стабильность, надежность и простоту, то PostgreSQL — на инновации и расширенную функциональность.
Будучи объектно-реляционной, PostgreSQL обеспечивает такие функции, как наследование таблиц и перегрузка функций. Поддерживает множество типов данных, включая JSON, XML, геопространственные данные, «ключ-значение» и другие.
Еще система расширяемая, можно воспользоваться одним из множества готовых расширений или создать собственное.
Рекомендуется для задач , где требуется многофункциональная БД, способная хранить массивные объемы данных и обрабатывать сложные запросы:
- построение небольших DWH (Data Warehouse) для аналитических систем;
- хранилище для геоинформационных систем — совместно с расширением PostGIS ;
- основное хранилище для веб-приложений, мобильных приложений, игр.
Не рекомендуется для задач, где :
- преобладают записи чтения — в таком случае предпочтительнее MySQL;
- требуется горизонтальное масштабирование;
- требуется OLAP-хранилище.
3 место. MongoDB
Одна из ведущих NoSQL-систем. MongoDB — документо-ориентированная: каждая строка представляет собой JSON или Binary JSON (BSON).
В базе данных используют язык запросов, он отличается от SQL и обеспечивает поиск по графам, а также географический, текстовый поиск и другие. Поддерживает распределенные ACID-транзакции. Благодаря горизонтальному масштабированию выдерживает очень высокие нагрузки.
Рекомендуется для задач, где используют полуструктурированные данные (JSON, XML), схема данных отсутствует или часто изменяется, а также требуется устойчивость к высоким нагрузкам:
- мобильные приложения,
- аналитика в реальном времени,
- CMS-системы,
- интернет вещей (IoT),
- электронная коммерция,
- игры.
Не рекомендуется для задач, где :
- данные структурированы;
- в будущем могут понадобиться жесткие схемы данных и проверки на консистентность.
4 место. Redis
Распределенная NoSQL-система для хранения данных вида «ключ-значение» (Key-Value) в оперативной памяти. За счет хранения In-Memory Redis очень быстрый — около сотни тысяч операций в секунду.
Также база данных позволяет сохранять данные на диск — с обратной записью в память при необходимости. Поддерживает множество структур, включая списки, хэши, наборы, растровые изображения, геопространственные данные и другие.
Рекомендуется для задач, где требуется распределить хранение больших объемов данных в памяти с высокой скоростью обработки:
Не рекомендуется для задач, где :
- небольшие объемы данных;
- есть необходимость в OLTP- или OLAP-хранилище.
5 место. Elasticsearch
Это распределенная система полнотекстового поиска, основанная на Java-библиотеке Lucene . Предлагает REST API и поддерживает как структурированные, так и полуструктурированные данные (JSON).
Считается одной из самых масштабируемых поисковых систем и входит в Elastic Stack (ранее ELK) наравне с Logstash , Kibana и Beats .
Рекомендуется для задач, где требуется полнотекстовый поиск для большого объема полуструктурированных данных в режиме, близком к реальному времени:
Читайте также: