1) So does it means that : if we are in a situation where Oracle NoSQL cannot access to 100% of the data then a client cannot connect ?No, it just cannot connect to specific node that is hosting the data to be accessed. Based on the stack trace you posted you did not post your entire program. Your stack had this in it:
Is it a choice for the implementation because another choice could be to allow to the client to connect but the it can work with only 50% of the data ?It will access the other data, as I mentioned. But you cannot really control the hash function that determines which shard hosts a particular key. The client is "smart" in that it will route a given request directly to the shard that is hosting the data, which is why your get() failed in that manner. Even if the request had gotten to the other shard it still would have failed because the node hosting the data is down and there is no replica.
2) I am not sure to understand why a replication factor of 3 is the solution for availability. If we loose a shard = one storage node + all replicated nodes associated to this storage nodes (may be 3) [is this a shard ?] then do we have access to 100% of data ? may be when a data arrive on a storage node on a server then the replicated data can go on a replicated node on another server or on the same server ?As explained in the documentation, at the high level, a store is split into a number of partitions, as determined when you create the store. In your case 100 partitions. Based on the number and capacity of storage nodes you've provisioned, as well as replication factor (RF), a store is split into a number of shards. A single shard will generally handle Npartitions/Nshards partitions. Your simple case has each shard hosting 50 partitions.