UUIDs are a possible way that is natively supported by cake:
http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#model-and-database-conventions
A primary key char36 field will automatically use those UUIDs.
Pros:
- uniqueness across the whole application
- cloak the count quite effectively (your main objective)
Cons:
- order is not necessarily correct anymore (relies on created then?), especially with batch imports and multiple created dates.
- need more space and make your queries slower.
Example:
5168a56a-f708-41b3-81ee-2f7152b0caef
...
An alternative would be use slugs for your user created content and always refer to that only by their slug (never by id). This way the autoincremented primary key can still be used for internal lookup and joins etc, but the frontend never really sees the id, as the slug is the main lookup field. Don't forget to index this slug field, though, as string-lookups are faster than.