Sharding is a database partitioning, that breaks up very large datasets into smaller chunks, or shards, and stores them in separate machines. This makes the data a lot faster to store and a lot easier to query.
As far as blockchains are concerned, every node has to store all the information on the blockchain locally, and process all incoming transactions. This provides a lot of security, but is not very scalable, because the entire network can only store as much data and process many transactions as a single machine.
The Ethereum core team has come up with a solution for this and it uses sharding to divide the blockchain data amongst nodes and allow nodes to process different transactions in parallel.
Instead of every node performing every transaction and storing all the data, nodes will be broken up into smaller groups, and each group will handle one part of the data and transaction processing.
Using Sharding, in theory, allows Ethereum to scale and not sacrifice security, as there is still more than one node storing each piece of data and processing every transaction.