Architecture for Distributed Distributed App

3

Help

Personal. I need a great help to set 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 link

I understand that there should not be greater 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 which users would be in the thousands?
  • Synchronization via modular xml files, so the transmission of the files would be based on timestamp within a pre-defined period range.
  • Network distribution through contacts? How could these updates be disseminated in the database?

Regarding database cryptography:

  • Since the basis will be on each client, how best to protect information?
asked by anonymous 13.05.2015 / 04:24

1 answer

2

Database

Database on the client (especially mobile) I do not see as being a good idea. First by the space consumed. Second because of the lack of options (I believe SQLite is your only or practically only option). This is 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 have the advantage of being faster for serialization and deserialization. And data compression is cool as well, but it is necessary to create a threshold to use compression (in the case of GZip or ZLib, a good number is close to 1200 bytes).

Information Spread

Here is the most complicated. 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).

Information Protection

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

I do not know what the purpose of the program is, but I do not think it's starting right. Mobile devices are not powerful, are expensive, and are volatile (in the sense that they decay very fast). This is not to mention the implementation difficulty.

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

    
13.05.2015 / 04:43