Hi Samer,
the reason for using MongoMK should be based on your scalability/HA requirements[0].
By default, you would use TarMK, and the assets would be included in the repository files. However, for large DAM installations we recommend using an external data store which can be done with TarMK or MongoMK.[1]
Either way, you should batch your uploads to reduce the strain on the system, consider doing this during this when user activity is at it's lowest. Another option is to stop the DAM Upload Asset workflow, during uploads and have a script that is run after the uploads. Have a look at the comments section of [2]
You can always write your own java application that uploads content to AEM calling the slingpostservlet passing in the correct parameters location, properties etc
Whatever you do, you must test out your full upload on a test system, to determine the best approach, e.g. batch size, and any optimizations that should be configured such as [3]
Regards,
Opkar
[0] https://docs.adobe.com/docs/en/aem/6-1/deploy/recommended-deploys.html
[1]https://docs.adobe.com/docs/en/aem/6-1/deploy/platform/data-store-config.html#Data Store Configurations
[2]https://edivad.wordpress.com/2013/01/07/installing-big-packages-in-cq5crx/
[3] http://cq-ops.tumblr.com/post/122108616399/the-importance-of-javaiotmpdir-in-dam-asset