For example if I have 5 servers (A, B, C, D, E)
Can we set the data distributed with replication factor of 3? (for example one write goes to ABC, other records goes to ABD, other record goes to ABE, and so on), so when node C had some hardware failure, there still some record exists.
Can we also add a new node then balance the stored data to the new node without downtime?
Yes, it can do that, but not in the way you are thinking. What you are describing would be NoSQL setup. Postgres-XL is an MPP database.
When you create a table you define it's "DISTRIBUTED BY" option which can be replication, round robin, hash, modulo, etc. You will need to review the details of each option. You can also define table spaces to be on defined nodes.
Your setup would be something like
NOTE: Important to point out that as I just discovered Postgres-XL has no HA or fail over support. Meaning that if a single node failed the database is down and will require manual intervention. Worse if you are using the round robin, hash, modulo sharing options if you lose the disk on a single node you have lost your database entirely.
You can have stand by nodes that mirror each of your nodes, but this will double the number of nodes you need and it will still not fail over. You will have to manually configure it to use the standby node and restart it.