O X do Xamarin Forms — Realm

Fala Galera,
Hoje venho falar um pouco sobre um banco de dados incrível e muito rápido o Realm.

Realm é um banco de dados móvel, que foi projetado para o mundo Mobile. Ele é uma ótima alternativa ao SQLITE, inclusive minha primeira escolha ao invés do SQLITE.
Conheci o Realm através de um amigo no trabalho, onde o mesmo utilizou ele com Swift em seu APP IOS. Sim o Realm não é exclusivo para Xamarin, ele suporta também IOS e Android.
Uma vantagem em cima do SQLITE é que não é necessário escrever código específico para cada plataforma para carregar o Realm. Incluindo o pacote via Nuget em todos os projetos esta pronto para usar.
Vale a pena e é confiável ?
Alem de na minha opinião (e a de todo mundo que usa) ser mais muito mais rápido que o SQLLite, ele também é utilizado por algumas "pequenas" (sarcasm = true;) empresas:

É simples de usar ?
Um exemplo do próprio site :

É pago?
A versão Developer é gratuita
Outros valores e diferenças de versões você pode consultar aqui
Mas chega de papo introdutório, vamos colocar a mão na massa e demonstrar um pouco da implementação do Realm.

Vamos criar um projeto Cross-Platform -> Blank Xaml App. (Figura 1)

Agora vamos no Bom e velho nuget Selecionar o Realm e instalar em TODOS os projetos. (Figura 2)
Certo! Agora o Ambiente esta montado, mas como o Realm trabalha?
Primeiro é importante saber q o Realm implementa o IDispose(), ou seja as instancias serão fechadas automaticamente (Limpas,Mortas mesmo! ) quando as variáveis saírem do escopo.

Crie uma pasta Model no projeto (Project-> New Folder) e a seguir crie a classe Porco.cs (meus exemplos tem referencias com minha vida :P) conforme mostra a Figura 3.
Estamos usando o namespace “using Realms” para que a classe possa herdar de RealmObject .
Qualquer objeto que você queira criar basta herdar de RealmObject.
Só existe uma restrição : você só pode usar um objeto na thread na qual ele foi criado, ou seja, você não pode passar o objeto para outra thread. Então Cuidado!
Como o Realm Trabalha diretamente com Objetos, não precisamos de um ORM. Podemos usar Linq!
É possível criar transações de 2 formas:

Na Figura 4 vemos um método de uma transação que implementa IDispose, e você tem que dar o commit ou ela será cancelada.

Na figura 5 a transação implícita será comitada por padrão.

Para excluir um objeto basta usar o método Realm.Remove (Figura 6) dentro de uma transação.

Para listar basta utilizar o Linq (Figura 7).
Como podem ver é o bom e velho linq, não tem segredo! este banco possui uma curva de aprendizado bem simples!
Alguns Links Úteis :
São exemplos simples, mas da para ter uma ideia de como funciona o Realm.
Espero ter ajudado!
Aquele Abraço!