Как выбрать базу данных для приложения
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 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 предпочтительное решение.
Базы данных являются отличным инструментом учета информации, который используется многими организациями. Существуют специальные программы, позволяющие работать с такими системами. Предлагаем рассмотреть наиболее популярные и качественные из них.
Microsoft Access
В каждой ячейке базы данных пользователь устанавливает тип данных, выбирая его из списка. Это может быть краткий или длинный текст, число, денежная сумма, дата и время, логическое значение, гиперссылка и т. д. Присутствует многофункциональный модуль для составления отчетов, запросов и форм, предусматривающий множество изменяемых параметров. Интерфейс поддерживает русский язык, а для начинающих пользователей реализовано подробное руководство с описанием всех процессов. Access является платным и распространяется в рамках офисного пакета от Microsoft.
LibreOffice
В LibreOffice предусмотрены практически все функции, которые можно найти в Access. При этом разработчики постарались сделать максимально простой и привлекательный инструмент без загромождения огромным количеством кнопок и категорий. В главном окне расположены только самые основные возможности. Однако в рассматриваемом решении отсутствует мастер для создания баз данных со стандартными шаблонами. Приложение обладает открытым исходным кодом и его можно бесплатно скачать на русском языке.
MySQL Workbench
Как понятно из названия, Workbench работает с базами на основе технологии MySQL. Она создана ее разработчиками, поэтому здесь сосредоточены все инструменты для создания и администрирования БД, которые могут пригодиться на практике. Подойдет даже для начинающих пользователей, поскольку все действия выполняются через удобный интерфейс. Из основных функций стоит отметить возможность установки шаблона для автоматического индексирования ячеек, выполнения запросов и смены сценариев SQL.
Важно отметить, что в MySQL Workbench предусмотрен модуль для визуального проектирования. Формирование таблиц и создание связей между ними осуществляется с помощью ER-диаграмм. Выделяется синтаксис SQL, отмечаются допущенные ошибки при наборе как обычного текста, так и кода. Интерфейс является весьма удобным, но он не поддерживает русского языка, что может стать проблемой.
Navicat
Интерфейс Navicat поделен на три основные части. В левом меню отображается список всех баз данных, к которому подключен пользователь. В центре размещена область для работы с таблицами, а справа можно ознакомиться с подробной информацией по выделенным объектам. Как и в случае с MySQL Workbench, для проектирования используются удобные ER-диаграммы. Можно установить ознакомительную версию или приобрести базовую, стандартную или коммерческую подписку. Русскоязычный интерфейс отсутствует.
DataExpress
В основе системы используется технология RemObject Pascal Script, которая позволяет реализовать любые логические алгоритмы. Интерфейс DataExpress выполнен в простом стиле и нацелен на рядовых пользователей, что дает им возможность создавать отличные СУБД без использования языка программирования. Для работы в сети используется движок Firebird. Помимо этого, можно добавлять собственные расширения для повышения функциональности ПО.
dbForge Studio
Следующее решение работает с системами MySQL и MariaDB. Имеет приятный графический интерфейс для осуществления запросов, разработки и отладки объектов баз данных. Проектирование БД в dbForge Studio происходит с помощью SQL. При этом редактор подсвечивает синтаксис, отмечает ошибки в нем, а также имеет функцию отладки хранимых процедур. Присутствует и визуальный редактор для малоопытных пользователей.
В dbFogrge Studio реализованы инструменты для грамотного администрирования базы данных. Можно открыть доступ к таблицам нескольким пользователям, работающим в рассматриваемой СУБД. Предусмотрено автоматическое резервное копирование, функция импорта и экспорта, возможность копировать базу данных и многое другое. Данные в таблицах можно подвергнуть подробному анализу или создать отчет. Для этого используется специальный мастер с множеством параметров. Продукт является платным и поддерживает русский язык.
Paradox Data Editor
Paradox Data Editor позволяет просматривать и редактировать таблицы баз данных на движке BDE. Хотя интерфейс программы и является несколько устаревшим, взаимодействовать с ним довольно просто. Стоит отметить наличие средства просмотра технологии BLOB, возможность установки различных фильтров и поиска, отображение статистики по отдельным колонкам. Это лишь малая часть удобных функций, которыми наделено рассматриваемое решение.
Предусмотрена система безопасности, позволяющая установить пароль на БД. Доступен экспорт данных в различные форматы (HTML, CSV, Excel, RTF, SYLK) и печать на принтере. Русскоязычный интерфейс отсутствует, зато распространяется Paradox Data Editor на бесплатной основе.
Reportizer
Следующая программа не предназначена для создания и администрирования баз данных и представляет собой отличный инструмент для формирования отчетов БД и дальнейшего их экспорта в отдельный файл или печати на бумаге. Reportizer стабильно работает с Oracle, Interbase, Access, Excel, SQL Server и HTML. Приложение тестировалось на этих системах и показало хороший результат. Оно может работать и с другими форматами, но стабильность не гарантируется.
Отчеты редактируются с помощью удобного конструктора с панелью инструментов. Доступны следующие форматы для отчетов: HTML, TXT, DB, DBF, CSV, ASC, XLS и HTML. Предусмотрено два режима конструктора: визуальный и текстовый. Первый подойдет для начинающих пользователей, второй же ориентирован на опытных разработчиков, знакомых с Delphi. Доступна ознакомительная версия на 24 дня. Русский язык не поддерживается, но есть украинская версия.
HeidiSQL
Среди основных функций стоит выделить подключение к серверу по туннелям, возможность импорта текстовых файлов, мониторинг и ограничение процессов клиента, добавление двоичных файлов и поиск по всем таблицам во всей базе данных. Русский язык не поддерживается, однако интерфейс довольно простой и нацелен на рядового пользователя.
Мы рассмотрели основные программы, предназначенные для работы с базами данных. Каждая из них поддерживает определенные форматы таких систем и подойдет далеко не для всех случаев. Но имея обширный перечень вариантов, найти нужное решение не составит труда.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Выбор системы управления баз данных (СУБД) представляет собой сложную
многопараметрическую задачу и является одним из важных этапов при разработке
приложений баз данных. Выбранный программный продукт должен удовлетворять как
текущим, так и будущим потребностям предприятия, при этом следует учитывать
финансовые затраты на приобретение необходимого оборудования, самой системы,
разработку необходимого программного обеспечения на ее основе, а также обучение
персонала. Кроме того, необходимо убедиться, что новая СУБД способна принести
предприятию реальные выгоды.
В данной статье по результатам анализа доступных источников, например 3,
делается попытка сформулировать требования или, иными словами, критерии при
выборе СУБД, приводится классификация требований/критериев. Очевидно, наиболее
простой подход при выборе СУБД основан на оценке того, в какой мере существующие
системы удовлетворяют основным требованиям создаваемого проекта информационной
системы. Более сложным и дорогостоящим вариантом является создание
испытательного проекта на основе нескольких СУБД и последующий выбор наиболее
подходящего из кандидатов. Но и в этом случае необходимо ограничивать круг
возможных систем, опираясь на некие критерии отбора. Вообще говоря, перечень
требований к СУБД, используемых при анализе той или иной информационной системы,
может изменяться в зависимости от поставленных целей. Тем не менее можно
выделить несколько групп критериев:
* Моделирование данных
* Особенности архитектуры и функциональные возможности
* Контроль работы системы
* Особенности разработки приложений
* Производительность
* Надежность
* Требования к рабочей среде
* Смешанные критерии
Рассмотрим каждую из этих групп в отдельности.
Особенности архитектуры и функциональные возможности.
Контроль работы системы
* Контроль использования памяти компьютера. Система может иметь
возможность управления использованием как оперативной памяти, так и дискового
пространства. Во втором случае это может выражаться, например, в сжатии баз
данных, или удалении избыточных файлов.
* Автонастройка. Многие современные системы включают в себя
возможности самоконфигурирования, которые, как правило, опираются на
результаты работы сервисов самодиагностики производительности. Данная
возможность позволяет выявить слабые места конфигурации системы и
автоматически настроить ее на максимальную производительность.
Особенности разработки приложений.
* Многие производители СУБД выпускают также средства разработки приложений
для своих систем. Как правило, эти средства позволяют наилучшим образом
реализовать все возможности сервера, поэтому при анализе СУБД стоит
рассмотреть также и возможности средств разработки приложений.
* Средства проектирования. Некоторые системы имеют средства
автоматического проектирования, как баз данных, так и прикладных программ.
Средства проектирования различных производителей могут существенно
различаться.
* Многоязыковая поддержка. Поддержка большого количества национальных
языков расширяет область применения системы и приложений, построенных на ее
основе.
* Возможности разработки web-приложений. При разработкеразличных
приложений зачастую возникает необходимость использовать возможности среды
internet. Средства разработки некоторых производителей имеют большой набор
инструментов для построения приложений под web.
* Поддерживаемые языки программирования. Широкий спектр используемых
языков программирования повышает доступность системы для разработчиков, а
также может существенно повлиять на быстродействие и функциональность
создаваемых приложений.
* Рейтинг tpc (transactions per cent). Для тестирования
производительности применяются различные средства, и существует множество
тестовых рейтингов. Одним из самых популярных и объективных является
tpc-анализ производительности систем. Фактически tpc анализ рассматривает
композицию СУБД и аппаратуры, на которой эта СУБД работает. Показатель tpc –
это отношение количества запросов обрабатываемых за некий промежуток времени к
стоимости всей системы.
* Возможности параллельной архитектуры. Для обеспечения параллельной
обработки данных существует, как минимум, два подхода: распараллеливание
обработки последовательности запросов на несколько процессоров, либо
использование нескольких компьютеров-клиентов, работающих с одной БД, которые
объединяют в так называемый параллельный сервер.
* Возможности оптимизирования запросов. При использовании
непроцедурных языков запросов их выполнение может быть неоптимальным. Поэтому
необходимо произвести процесс оптимизации запросов, т.е. выбрать такой способ
выполнения, когда по начальному представлению запроса путем его синтаксических
и семантических преобразований вырабатывается процедурный план выполнения
запроса, наиболее оптимальный при существующих в базе данных управляющих
структурах.
Понятие надежности системы имеет много смыслов – это и сохранность информации
независящая от любых сбоев, и безотказность работы системы в любых условиях, и
обеспечение защиты данных от несанкционированного доступа.
* Восстановление после сбоев. При возникновении программных или
аппаратных сбоев целостность, да и работоспособность всей системы может быть
нарушена. От того, как эффективно спланирован механизм восстановления после
сбоев, зависит жизнеспособность системы.
* Резервное копирование. В результате аппаратного сбоя может быть
частично поврежден или выведен из строя носитель информации и тогда
восстановление данных невозможно, если не было предусмотрено резервное
копирование базы данных, или ее части. Резервное копирование спасает и в
ситуациях, когда происходит логический сбой системы, например при ошибочном
удалении таблиц. Существует множество механизмов резервирования данных
(хранение одной или более копий всей базы данных, хранение копии ее части,
копирование логической структуры и т.д.). Зачастую в систему закладывается
возможность использования нескольких таких механизмов.
* Откат изменений. При выполнении транзакции применяется простое
правило – либо транзакция выполняется полностью, либо не выполняется вообще.
Это означает, что в случае сбоев, все результаты недоведенных до конца
транзакций должны быть аннулированы. Механизм отката может иметь различное
быстродействие и эффективность.
* Многоуровневая система защиты. Информационная система организации
почти всегда включает в себя секретную информацию, поэтому для предотвращения
несанкционированного доступа используется служба идентификации пользователей.
Уровень защиты может быть различным. Кроме непосредственной идентификации
пользователей при входе в систему может использоваться также механизм
шифрования данных при передаче по линиям связи
Требования к рабочей среде.
* Поддерживаемые аппаратные платформы.
* Минимальные требования к оборудованию.
* Максимальный размер адресуемой памяти. Поскольку почти все
современные системы используют свою файловую систему, немаловажным фактором
является то, какой максимальный объем физической памяти они могут
использовать.
* Операционные системы, под управлением которых способна работать
СУБД.
* Качество и полнота документации. К сожалению, не все системы имеют
полную и подробную документацию.
* Локализованность. Возможность использования национальных языков не
во всех системах реализована полностью.
* Модель формирования стоимости. Как правило, производители СУБД
используют определенные модели формирования стоимости. Например, стоимость
одного и того же продукта может существенно изменяться в зависимости от того,
сколько пользователей будет с ним работать.
* Стабильность производителя.
* Распространенность СУБД.
Даже если просто отмечать насколько хороши или плохи выделенные параметры в
случае каждой конкретной СУБД, то сравнение уже двух различных систем является
трудоемкой задачей. Тем не менее, четкий и глубокий сравнительный анализ на
основании вышеперечисленных критериев в любом случае поможет рационально выбрать
подходящую систему для конкретного проекта, и затраченные усилия не будут
напрасными. Перечень критериев поможет осознать масштабность задачи и выполнить
ее адекватную постановку.
Следует отметить, что по существующей практике решение об использовании той
или иной СУБД принимает один человек – обычно, руководитель предприятия, а он
может опираться отнюдь не на технические критерии. Здесь свою роль могут сыграть
такие, с технической точки зрения, незначительные факторы как рекламная
раскрутка компании-производителя СУБД, использование конкретных систем на других
предприятиях, стоимость. При этом последний фактор может трактоваться в двух
противоположных смыслах в зависимости от финансового состояния и политики
предприятия. С одной стороны, это может быть принцип, – чем дороже, тем лучше. С другой стороны – культивирование почти бесплатного использования продукта,
вплоть до “взлома” его лицензионной защиты. Очевидно, последний подход чреват
коллизиями и не может привести к успеху в долгосрочной работе.
Ниже приведен отобранный список Top Free базы данных, с популярными функциями и ссылками для скачивания. Этот список сравнения содержит инструменты с открытым исходным кодом, которые могут иметь функции Freemium.
1) MySQL
Платформа: Linux, Windows и Mac.
Языки: C, Java, SQL, C ++, Perl, Python, Tcl и PHP.
Облачная версия: Да
Особенности:
- Инструмент обеспечивает масштабируемость и гибкость
- У инструмента есть сильные стороны сети и хранилища данных
- Обеспечивает высокую производительность
- Имеет надежную поддержку транзакций
Вердикт: MySQL может использоваться для упакованного программного обеспечения, а также для критически важных для бизнеса систем и крупных веб-сайтов.
2) PostgreSQL
Платформа: Mac, Windows и Linux.
Языки: PL / Tcl, PL / pgSQL, PL / Python и PL / Perl.
Облачная версия: Нет.
Особенности:
- Совместим с различными платформами, используя все основные языки и промежуточное ПО
- Резервный сервер и высокая доступность
- Инструмент имеет развитую функциональность программирования на стороне сервера
- Репликация на основе журнала и триггера SSL.
- Он предлагает самый сложный механизм блокировки.
- Поддержка многоверсионного управления параллелизмом
- Обеспечивает поддержку клиент-серверной сетевой архитектуры.
- Инструмент является объектно-ориентированным и совместимым с ANSI-SQL2008
- PostgreSQL позволяет связываться с другими хранилищами данных, такими как NoSQL, которые действуют как федеративный концентратор для баз данных polyglot.
Вердикт: PostgreSQL позволяет создавать собственные типы данных и диапазон методов запросов. Вы можете запустить процедуру хранения на разных языках программирования.
3) MongoDB
Платформа: кроссплатформенная
Облачная версия: Да
Особенности:
- Полностью автоматизированное масштабирование и управление сложными, высокодоступными, многоузловыми кластерами с помощью вызовов API.
- Этот инструмент позволяет создавать глобально распределенные кластеры.
- Легко восстановить данные при необходимости.
- Он предлагает визуализацию, мониторинг и оповещение по более чем 80 метрикам, которые отслеживают состояние вашего кластера или интегрируются со сторонними решениями для мониторинга.
- Инструмент имеет мощный язык запросов
- Он использует богатые документы JSON для хранения таблиц в реляционной базе данных.
- Он предоставляет MongoDB Atlas, который является глобальной облачной базой данных.
Вердикт: MongoDB позволяет вам проверить документ. Он не подходит для приложений, имеющих сложные транзакции.
4) OrientDB
Платформа: Linux, Mac OS X, Windows, Solaris и HP-UX
Облачная версия: Да
Особенности:
Вердикт: OrientDB имеет возможность выполнять репликацию с несколькими мастерами, совместно использовать данные с использованием кластеров и автоматизировать распределенные запросы и транзакции.
5) MariaDB
Платформа: Windows, Linux и Mac.
Облачная версия: Да
Особенности:
- Он работает под лицензиями GPL, BSD или LGPL.
- Он поставляется со многими механизмами хранения, включая высокопроизводительные, которые можно интегрировать с другими системами управления реляционными базами данных.
- Это обеспечивает кластерную технологию Galera.
- MariaDB может работать в разных операционных системах и поддерживает множество языков программирования.
Вердикт: MariaDB является альтернативой MySQL. Это обеспечивает высокую масштабируемость благодаря простой интеграции.
Читайте также: