Что выбрать Core Data & iCloud или Firebase Firestore для хранения данных iOS-приложения?
Друзья, разбираюсь в этом уже несколько недель и, если честно, чем дальше — тем труднее принять решение так как не хватает опыта.
У меня есть iOS-игра (только iOS), из данных там есть юзеры, уровни и записи о том какие уровни прошёл юзер. Данные это Int, String и есть Binary data (под 50кб на каждый уровень). Сейчас временно использую локальные json файлы, и планирую переход на базу данных.
Выбираю между Core Data с iCloud или Firebase Firestore (с сохранением binary data в Firebase Cloud Storage).
Core Data & iCloud мне не нравится тем, что я, как разработчик, не буду иметь доступа к БД пользователя, а значит, я не смогу зайти "как админ" и посмотреть как пользователь играет в игру, какой уровень вызвал затруднение, на чём он остановился и т.п. Это частично можно решить инструментами аналитики, но ведь не полностью.
О Core Data многие отзываются плохо из-за сложности, запутанности и архаичности. Хоть и Apple его постоянно развивает.
В плюс к Core Data можно отнести и то, что это relationalDB. И мне понятно как связать Users, Levels и Gameplay БД.
Firebase, конечно, тоже нравится и получаю много советов использовать его. Но в основном те, кто его советуют либо программируют под Android либо под обе платформы сразу, а для меня эта кроссплатформенность не важна. Мне важна скорость разработки и отсутствие проблем в будущем из-за неправильного выбора/настройки БД.
Ещё я понимаю, что проект можно реализовать и на Core Data&iCloud и на Firebase, и однозначного ответа быть не может. А пользователи тем более не заметят разницу. Поэтому прошу совета у того, кто опытнее меня — если вы долгое время работали с этими БД — поделитесь, пожалуйста, отзывом. Что предпочитаете, что понравилось, что не понравилось. Заранее очень благодарен.
Храните в iCloud (CloudKit), все-таки это first-party.
Тащить firebase, для такой мелочовки - явный оверхед, да и транзитивно скачает пол интернета как зависимость (скажется на времени компиляции).
FireBase
Ибо...
Всетаки если проект будет успешным, на него всеравно рано или поздно переходить, а если нет - так хоть научишься его использовать. Да и экосистема Google в части development даст 100 очков вперед.
Araya, если приложение станет успешным — появятся и деньги. Вот примерные траты на сайте Firebase: https://firebase.google.com/docs/firestore/billing... при 50К инсталлов стоимость будет около $12 в месяц, даже если они эту цифру уменьшили (даже если в десять раз) это не деньги для проекта на 50000 инсталлов.
Чего я опасаюсь, так это иметь проект на "50000 инсталлов" и осознать, что пару лет назад был выбран не тот бекенд. Потому что каждый бекенд — это собрание компромиссов.
CoreData выглядит ну прям максимально ограниченной. Как, например, я могу увидеть, на каком уровне остановился пользователь? Если CloudKit это пишет в private БД, к которой у меня нет доступа. Получается проект пилю я, а данные все у Apple, и я работаю вслепую. (как пример)
Игорь, CoreData - это ORM и лежать там будет то, что туда положат. Можно не использовать CloudKit, если он вам не нравится.
Firebase тоже хорош, но повторюсь, для пары скаляров тащить такое в проект - оверхед.
Вам нужно поднять температуру в комнате и вместо обогревателя вы тащите турбину от самолета, надеюсь, вы уловили мою мысль.
AlexVWill, да я в принципе не понял аргумент в пользу firebase, вообще не обязательно на него переходить.
Если приложение станет супер успешным, напишут свой бэкенд с андроидом и прочими прелестями.
Araya, очень нравится читать ваши аргументы, всё по делу, спасибо!
Firebase, конечно, добавляет веса в проект, но CoreData и CloudKit тоже. Я просто не увижу их так явно, как pods от Firebase с кучей файлов и зависимостей.
Тут еще вот с какой стороны можно посмотреть: У кого в итоге будут данные? Если использовать CloudKit — данные будут у Apple (у разработчиков нет доступа к private БД каждого юзера). Если Firebase — все данные доступны нам. И мы сможем на основе этих данных что-то предпринимать.
Свой бекенд — вообще сказка. Но BaaS существуют и пользуются популярностью не просто так. Это сокращает время разработки и минимизирует возможные ошибки.
Да, имея свой бекенд легко, например, выбрать всех пользователей, которые совершали покупку за последний год. В Firebase это сделать можно. В CloudKit, насколько я наслышан — нет, т.к. доступа к БД users у нас не будет?
Araya, сравнение плохое, Firebase это скоре конструктор Лего против набора из говна и палок, и что из него собрать и какие нужные компоненты использовать - дело пользователя. А некоторые компоненты на мой взгляд вроде cloud messaging или Firebase authorization вообще аналогов по удобству и универсальности не имеют. К БД это тоже относится