I'm trying to understand the distinction between nodes and shards in a distributed system or database context. I want to know how they differ in terms of their functionality and how they contribute to the overall performance and scalability of the system.