Architecture for Decentralized Distributed App

Asked

Viewed 84 times

3

Helping

Guys. I need a lot of help defining a direction. I need to develop a cross-platform app (Android, WP and iOS) in a distributed and decentralized way. It would be a multi-master application, which means there is no central location.

The most significant reference I found was this: Architecture for a Decentralized Distributed Application https://stackoverflow.com/questions/5131811/architecture-for-a-decentralized-distributed-application

I believe that there should be no major surprises in the development of the App itself, but in the synchronization of information; in replications.

My idea is the following in the context of synchronizations and replications:

  • Define the database. Which would meet the demand, and users would be in the thousands?
  • Synchronization by means of modular xml files, thus the transmission of these files would be based on timestamp within a predefined period interval.
  • Distribution in the network through contacts? How could these updates be disseminated in the database?

In relation to database encryption:

  • Since the base will be in each client, what is the best way to protect the information?

1 answer

2


Database

Customer database (especially mobile) I don’t see how to be a good idea. First by the space consumed. Second by the lack of options (I believe Sqlite is your only or practically only option). Not to mention resource consumption (bandwidth, RAM, SSD and processor).

Message Exchange

The overhead of XML files is relatively high. If possible use something smaller, like Json, or even a binary format. Binary formats besides all have the advantage of normally being faster for serialization, deserialization. And data compression is cool too, but you need to create a Threshold to use compression (in the case of Gzip or Zlib, a good number is close to 1200 bytes).

Propagation of Information

This is the trickiest part. The easiest would be to use a server that would keep who is online and who is not (equivalent to the Torrent protocol tracker). Otherwise, study DHT (I believe it works).

Protection of Information

In this you are limited to the protection offered by the chosen DBMS, unless you use your own technology, or encrypt the entire content of the bank, but this would reduce the power of executing queries.

I don’t know what the purpose of the program you want to develop is, but I don’t think you’re getting it right. Mobile devices are not powerful, are expensive, and are volatile (in the sense that they deteriorate too fast). Not to mention the difficulty of implementation.

Maybe Blockchain can help you. But without knowing the domain of your application, there is no way to evaluate.

  • Thanks for the help. The application would be based on social relationships, like a social network. What I couldn’t understand is how Blockchain could help. Regarding the database, I believe the solution for encryption is in this post: http://stackoverflow.com/questions/2203987/android-database-encryption/7328825#7328825

  • 1

    @joaozarate Blockchain is much more than Bitcoin processing. It is a complete decentralization concept. So much so that they are implementing DNS and several other projects in which their only common feature is the total decentralization of information. Of course, I spoke without knowing the domain of its application, so it may be that it is Overkill or simply inappropriate or absurd. ;D

Browser other questions tagged

You are not signed in. Login or sign up in order to post.