As it is built on top of NoSQL data storage it doesn't have to replicate all SQL functionality. These solutions are implemented for different purposes. So, the first step is to ensure that the solution fits your needs better than the other data storages.
I've reviewed the Apache Phoenix docs. So far I may suggest using application logic to ensure data integrity. Cascade deletes/updates are not always needed, and I believe with NoSQL solitions the application logic might be the best place for them (for example, there is a mixin for Loopback.io which performs cascade delete for NoSQL data storages, like MongoDB: https://github.com/rocknrolla777/loopback-cascade-delete-mixin).
To substitute unique index you may use UUID, for example.