Pull to refresh

Comments 18

Машинный перевод и куча ошибок представлено в текст, дай глазу вытекать на клавиатуру
По сути поста: интересно, спасибо.
Не знаю, как там в iOS, но на Android Realm не всегда удобнее даже чистого SQLite (наследование сущностей от специального класса, создание классов строго определенным образом, собственные структуры данных, иногда рандомные ошибки, миграции, которые завезли буквально вчера-позавчера). Да и насчет скорости не уверен, основательных замеров не находил. Хотя идея интересная, конечно.
В прошлом году создавали с друзьями приложение на Realm. Нам важна была скорость работы базы. Не помню где, но находили статистику, которая говорит о том, что Realm в 3 раза, если не ошибаюсь, превосходить SQLite как по записи, так и по чтению.
Ну, это официальная статистика так говорит. Я недавно нашел тест на гитхабе, выводы такие:
From the completed tests, we can see that Realm is slightly faster than SQL when it comes to individual transactions, but SQL still has a small advantage when it comes to bulk transactions.

Но я не смотрел код и как он мерял, так что нельзя сказать, что это авторитетный тест. Но, по крайней мере, независимый вроде.
Ну, это официальная статистика так говорит

Я бы удивился, если бы выставили статистику, выставляющую их в неприглядном свете :)
На Swift не написать приложение для iOS ниже 7ой версии, а с Realm ещё и iOS 7 за бортом?
iOS 7 cannot be supported because it does not allow using 3rd party dynamic frameworks, and it is impossible to build static libraries that contain Swift code.
Если быть точнее то по требованиям:

Objective‑C
Apps using Realm can target: iOS 7 or later, OS X 10.9 or later & WatchKit.

Swift
Apps using Realm can target: iOS 8 or later, OS X 10.9 or later & WatchKit.
Значит в настоящий момент это решение не для меня. Я не готов сужать аудиторию, мне хватает что пользователи iOS 5 и 6 не могут поставить мои приложения. Мне кажется, что библиотека, претендующая на замену стандартных способов хранения данных, должны быть максимально совместимыми.
А оправдан ли отказ от современных технологий из-за пользователей, количество которых можно пересчитать по пальцам одной руки?
Это конечно сильно зависит от проекта, но пока у меня не хватило фантазии представить такой проект в котором действительно было бы важно сейчас поддерживать хотя бы iOS 7, т. к. iOS 8 поддерживается далеко не самыми новыми устройствами от Apple.
Для меня сейчас такой отказ оправдан и я это поясню.
1) про современные технологии — это с моей стороны они более современные и удобные, пользователь не получит больше функций от того, что я сменю тип хранения данных. Если бы это была супер-фича, к примеру, возможность через камеру телефона проектировать видео на стену, я бы не сомневался)
2) про количество устройств с iOS 7 — если коротко, то оно вполне велико. Дело в том, что для обновления на более современную версию iOS требуется место на устройстве, а у многих забитые под завязку устройства на 8/16 Гб. Они, конечно, поддерживают iOS 9, но что толку, если пользователям некуда его поставить.
Как уже писал, мои приложения на Swift — для меня минимальная версия iOS 7.
Вот статистика по пользователям одного из моих приложений за последний месяц: 36.5% — iOS7, 32,5% — iOS8, 31% — iOS9.

Вы правда считаете, что мне стоит сменить тип хранения данных и потерять при этом треть аудитории пользователей iOS? Я на это пойти не готов.
На сколько я понял Realm – это проприетарное решение за 0$, с опенсорсными байндингами к Java и Cocoa в которое всё дружно грузят данные своих приложений.

Это звучит хорошо и красиво, но в чём подвох?
С точки зрения безопасности подключение подобных библиотек может сулить довольно большой брешью.
Не то что бы я был прям таким «большой брат...» и всё такое, но вот если какие-то весёлые ребята найдут что-то и будут сливать платёжную информацию — будет весело.
realm-jni — это что тогда? Можете изучить код, или даже собрать сами, коль боитесь бинарника. Большинство теорий заговора появляется от поспешных выводов.
Наличие списка API функций и их аргументов отнють не гарантирует отсутствие дыр непосредственно в самой реализации.
Намеренное переполнение буферов, со всеми последствиями, никто не отменял.
На самом деле, смотреть стоит вот сюда:
github.com/realm/realm-java/blob/master/realm/realm-jni/build.gradle

Тут видно, откуда выдираются исходники самого ядра вместе с некими загадочными библиотеками.
А именно, отсюда:
static.realm.io/downloads/core/realm-core-android-0.95.3.tar.gz
Изучить код биндингов в Java?
Sign up to leave a comment.

Articles