<p>I have client application that uses WCF service to insert some data to backend database. Client application is going to call service on per event basis (it can be every hour or every second).</p>

<p>I'm wondering what's the best way of calling that service. </p>

<p>Should I create communication channel and keep it open all the time, or should I close channel after each call and create it again?</p>

The first question is whether your server needs to maintain any state about the client directly (i.e. are you doing session-like transactions?)  If you are, you will need to be able to manage how the server holds the information between communications.
My initial feeling of your question is that if there is no need to leave a connection open, then close it each time and recreate a new connection on demand.  This will avoid issues where a connection can be placed into a faulted state between calls.  The overhead of creating and destroying connections is minimal, and it will (probably) save you a lot of time in debugging
when
something goes wrong.