Сервис по синхронизации данных через облако.

5 views
Skip to first unread message

Vladimir Prudnikov

unread,
Nov 5, 2010, 11:27:17 AM11/5/10
to iPhoneDevCamp Ukraine
Добрый день, товарищи.

Я разрабатываю сервис который позволит синхронизировать разного рода
данные (объекты) между клиентами (iPhone, iPad, Mac, Android, Win)
через облако.
Данные синхронизируются через веб сервис, там же мерджатся и раздаются
клиентам. Авторизация клиентов проходит по протоколу OAuth.

Для пользователя существует минимальный бесплатный план. Для
увеличения объема данных и функционала будут платные планы. Для первых
разработчиков возможен вариант revenue sharing (например 20% от
платежей пользователей которые пршли с вашей программы). На начальном
этапе я готов с каждым обсуждать условия. Потом они могут измениться.

На данный момент хочется найти заинтересованых в этом сервисе
разработчиков. Если вы разработчик программы которой может
понадобиться такой сервис, интересно ли вам это решение для внедрения
в вашу программу?

Буду очень рад услышать любые мнения, высказывания, пожелания, критику
и т.д.
Спасибо

Vladimir Pouzanov

unread,
Nov 6, 2010, 6:31:08 AM11/6/10
to iphoned...@googlegroups.com
Чем это лучше, чем Dropbox?

2010/11/5 Vladimir Prudnikov <pru...@gmail.com>:

> --
> You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
> To post to this group, send email to iphoned...@googlegroups.com.
> To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.
>
>

--
Sincerely,
Vladimir "Farcaller" Pouzanov
http://farcaller.net/

Nikita Lutsenko

unread,
Nov 6, 2010, 6:38:02 AM11/6/10
to iphoned...@googlegroups.com
О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ shared objects? - О©╫О©╫О©╫


Vladimir Pouzanov wrote:
О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ Dropbox?

2010/11/5 Vladimir Prudnikov <pru...@gmail.com>:
О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.

О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫ (О©╫О©╫О©╫О©╫О©╫О©╫О©╫) О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ (iPhone, iPad, Mac, Android, Win)
О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫.
О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ OAuth.

О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫. О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ revenue sharing (О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ 20% О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫). О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.

О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫?

О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫ О©╫.О©╫.
О©╫О©╫О©╫О©╫О©╫О©╫О©╫

--
You received this message because you are subscribed to the Google Groups "iPhoneDevCamp Ukraine" group.
To post to this group, send email to iphoned...@googlegroups.com.
To unsubscribe from this group, send email to iphonedevcamp...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/iphonedevcampua?hl=en.




Vladimir Pouzanov

unread,
Nov 6, 2010, 7:18:47 AM11/6/10
to iphoned...@googlegroups.com
2010/11/6 Nikita Lutsenko <soul....@gmail.com>:
> А дропбокс имеет апи для shared objects? - ОМГ

Никита, для нас, маководов, shared objects – это ж вроде бандлы? :)

Меня смущает следующий момент: "там же мерджатся". Как сервис знает
что и как мержить? Либо эти даные супермегаабстрактны, либо мы
предоставляем алгоритм стратегии мержа. В таком случае ничто не мешает
нам реализовать тот же алгоритм на клиенте, и использовать любой
абстрактный файл-шаринг с локами. Так делает 1Password через Dropbox.
Так делает OmniFocus через WebDAV.

Как-то уже решал эту задачу для сферического планировщика в вакуме.
Успешно решил через WebDAV, потом частично портировал на Dropbox. Я
считаю, что такой сервис будет не очень полезен именно из-за того что
серверу придется знать очень много, для мержа данных.

Vladimir Prudnikov

unread,
Nov 6, 2010, 8:03:27 AM11/6/10
to iPhoneDevCamp Ukraine
Вот даже как. Я ожидал вопроса "Чем это лучше чем MobileMe", но вот
дропбокс это вообще другого плана сервис. Дропбокс это файловое
хранилище, скажем, современный FTP.

> > For more options, visit this group athttp://groups.google.com/group/iphonedevcampua?hl=en.

Vladimir Pouzanov

unread,
Nov 6, 2010, 9:06:30 AM11/6/10
to iphoned...@googlegroups.com
2010/11/6 Vladimir Prudnikov <pru...@gmail.com>:

> Вот даже как. Я ожидал вопроса "Чем это лучше чем MobileMe", но вот
> дропбокс это вообще другого плана сервис. Дропбокс это файловое
> хранилище, скажем, современный FTP.

MobileMe для конечного разработчика – это WebDAV шара, по сути – все
то же файловое хранилище.

Каким образом вы выполняете мерж на сервере, вот в чем вопрос.

Vladimir Prudnikov

unread,
Nov 6, 2010, 9:47:09 AM11/6/10
to iPhoneDevCamp Ukraine
Возможно я не понимаю что конкретно хочется узнать.

Хранятся все изменения аттрибутов объекта и по времени каждого
изменения применяются на объект. Т.е. все изменения проигрываются по
времени и каждое последующее изменение аттрибута переписывает
предыдущее значение. Для строковых/текстовых значений алгоритм немного
другой и он в процессе реализации. Вместо переписывания предыдущего
состояния аттрибута, проверяется, получал ли клиент это предыдущее
состояние перед тем как на нем были внесены изменения и залиты на
сервер. Если получал -- переписывается на верх. Если не получал -- 2
строки из 2 соседних состояний аттрибута мерджатся.

On Nov 6, 2:06 pm, Vladimir Pouzanov <farcal...@gmail.com> wrote:
> 2010/11/6 Vladimir Prudnikov <pru...@gmail.com>:
>
> > Вот даже как. Я ожидал вопроса "Чем это лучше чем MobileMe", но вот
> > дропбокс это вообще другого плана сервис. Дропбокс это файловое
> > хранилище, скажем, современный FTP.
>

> MobileMe для конечного разработчика - это WebDAV шара, по сути - все

Vladimir Prudnikov

unread,
Nov 6, 2010, 8:31:03 AM11/6/10
to iPhoneDevCamp Ukraine

On Nov 6, 12:18 pm, Vladimir Pouzanov <farcal...@gmail.com> wrote:
> 2010/11/6 Nikita Lutsenko <soul.ode...@gmail.com>:


>
> > А дропбокс имеет апи для shared objects? - ОМГ
>

> Никита, для нас, маководов, shared objects - это ж вроде бандлы? :)


>
> Меня смущает следующий момент: "там же мерджатся". Как сервис знает
> что и как мержить? Либо эти даные супермегаабстрактны, либо мы
> предоставляем алгоритм стратегии мержа. В таком случае ничто не мешает
> нам реализовать тот же алгоритм на клиенте, и использовать любой
> абстрактный файл-шаринг с локами. Так делает 1Password через Dropbox.
> Так делает OmniFocus через WebDAV.

Ты даешь сервису объекты, у которых есть свои аттрибуты. История
изменений хранится на уровне аттрибутов объекта а не целых объектов.
Соответственно всегда можно "проиграть" изменения и получить последнее
состояние объекта.

Проблема в том что синхронизация не может быть на клиентах.
Синхронизация должна проходить через 1 сервис иначе большая
вероятность появления дубликатов и потерь данных.

Потом такой момент с реализацией файл шаринга. Есть 2 клиента. Ты
сделал изменения на первом в оффлайне, потом на втором и сразу же
синхронизировал, потом синхронизировал первый. В результате ты
перепишешь более новое изменение более старым.

Дальше, при использовании файл шаринга ты хранишь полностью бандл, и
чтобы периодически синхронизировать данные ты будешь качать с сервера
весь бандл и мерджить на клиенте что есть большие потери на трафике
(особенно актуально для мобильных клиентов). Как уже и говорил что
потери данных и дубликаты в этом случае неизбежны. Да, будь ты один
пользователь своей базы данных ты можешь знать "я на мобиле сделал
изменения днем, поэтому прежде чем буду изменять на маке дома, надо
сначала синхронизировать мобилу и получить на маке последние
изменения", но это неудобство такое же неудобство как коннектить
девайсы к компу и синхронизировать с компом.

Следующий момент. Положив бандл где-то как ты позволишь своему Android
клиенту пользоваться этой базой? Или .NET под виндой?

Да, большие люди типа Evernote могут сами сделать свой Sync сервис,
арендовать и поддерживать сервера, ведь они получили десятки милионов
инвестиций. Но есть еще тысячи и милионы обычных разработчиков которые
себе этого позволить не могут, которые, предоставив возможность
синхронизации данных получают больше заинтересованых клиентов. Тот
случай когда (1 + 1) > 2.

Vladimir Pouzanov

unread,
Nov 6, 2010, 10:16:04 AM11/6/10
to iphoned...@googlegroups.com
2010/11/6 Vladimir Prudnikov <pru...@gmail.com>:

> Следующий момент. Положив бандл где-то как ты позволишь своему Android
> клиенту пользоваться этой базой? Или .NET под виндой?

Отлично все работает. Бандл – это маковое название папки с файлами :)

Вообще, звучит интересно. Если чего – готов побетатестить.

Vladimir Prudnikov

unread,
Nov 6, 2010, 10:26:05 AM11/6/10
to iPhoneDevCamp Ukraine
Я знаю что такое бандл. Но в нем хранятся данные в своем формате,
например Core Data XML файл, который должен понять например андроид
для которого это просто XML файл а не CoreData и его ридется научить
читать и писать в него.

Спасибо что заинтересовался, записал контакт, буду держать в курсе.

On Nov 6, 3:16 pm, Vladimir Pouzanov <farcal...@gmail.com> wrote:
> 2010/11/6 Vladimir Prudnikov <pru...@gmail.com>:
>
> > Следующий момент. Положив бандл где-то как ты позволишь своему Android
> > клиенту пользоваться этой базой? Или .NET под виндой?
>

> Отлично все работает. Бандл - это маковое название папки с файлами :)
>
> Вообще, звучит интересно. Если чего - готов побетатестить.

Vladimir Pouzanov

unread,
Nov 6, 2010, 10:43:01 AM11/6/10
to iphoned...@googlegroups.com
2010/11/6 Vladimir Prudnikov <pru...@gmail.com>:

> Я знаю что такое бандл. Но в нем хранятся данные в своем формате,
> например Core Data XML файл, который должен понять например андроид
> для которого это просто XML файл а не CoreData и его ридется научить
> читать и писать в него.

Нет, в нем хранятся данные в *моем* формате (как хочу, так и храню).
Например я люблю бандлы из кучи мелких plist/bplist фалов, которые
одинаково хорошо читаются везде.

Reply all
Reply to author
Forward
0 new messages