Use Quarkus MongoDB client - mongodb

I have started exploring Quarkus with MongoDB client. I came across a lot of boiler plate code in the documentation. (esp. BSON)
refer: https://quarkus.io/guides/mongo-guide
Can't we make use of the annotations to generate the code.
Is this intentional to avoid the Reflection overhead.

We have a lot of good things coming up for the MongoDB support in our next release (0.24.0 planned for Wednesday): it's called MongoDB with Panache.
You can see what it does in the documentation of the master branch here: https://github.com/quarkusio/quarkus/blob/master/docs/src/main/asciidoc/mongodb-panache-guide.adoc .
So I would say, wait for 0.24.0 and give a try to this new feature (or you can build master and give it a try already), feedback is very welcome.

Related

Options for fastapi with graphql and mongo

I would like to start a new project making use of fastapi. i would prefer mongodb as the storage backend and I would also like to have the whole thing 'speak' graphql.
In early 2022; what are the options? I see there's graphene-mongo... but I can't seem to find anything else.
I am trying to develop something with this tech stack but without success so far.
I am a front-end developer and am diving into the full stack universe. After trying many languages, frameworks and databases, this technology stack I found the most interesting for what I intend to do because of its flexibility.
But for now, I could not advance much and also found the same difficulty as you, very few examples available on the web.
My small example application uses FastAPI, is already connected to the MongoDB Atlas database and I tried using the Graphene library to expose a graphql endpoint of the database query result, but so far I haven't achieved any meaningful result.
I have also tried using the Strawberry library, which is suggested by the FastAPI documentation, but haven't achieved much yet either.
I will keep pushing to make this tech stack work and if I succeed, I can share my experience with you if you are still interested.

What are some of the big differences in Java Client versus Go Client when implementing Uber Cadence workflow?

I am working on designing a workflow with the intention of using cadence workflow engine and Java client. Seems like uber is actively using Go, and thus Go has better documentation and Activity and other classes than Java Client. Is this true?
No, it is not really true. The majority of the open source users of Cadence and Temporal are using Java SDK.
If you go the the java-client channel in Cadence slack, the community has more discussion than go-client. Even in Uber, Java-client is heavily used by core services like payments.
Go client happens to have more docs/samples because it started a little earlier. In fact, the docs that are missing in Java, could be derived from Go. It should be noted that there are more documents in Java library. For example, the documents of how to write unit tests, instead of putting in to cadenceworkflow.io, we put in
javadocs directly. Because this is the convention for Java developer to lookup documentation.
IMO they are the same important for Cadence. All the new features are implemented/rolling out at the same time hence they don't have real difference.

mongodb change streams java

Since this feature is relatively new (mongo 3.6) I found very few java examples.
My questions:
1. What is the best practices for watching change streams?
2. Does it have to be a blocking call to watch the stream? (This means a thread per collection which is less desired)
This is the example I encountered:
http://mongodb.github.io/mongo-java-driver/3.6/driver/tutorials/change-streams/
The blocking call is:
collection.watch().forEach(printBlock);
Thanks,
Rotem.
Change streams make a lot more sense when you look at them in the context of reactive streams. It took me a while to realize this concept has a much broader existence than just the MongoDB driver.
I recommend reviewing the article above and then looking at the example provided here. The two links helped clear things up, and provided insight on how to write code leveraging the reactive streams Mongo driver, which is non-blocking.
Use mongo reactive driver so that it will be non-blocking. And we used this approach and running in production for last one month, no issue.

Angular 4 and Node.js combination

So as the title implies, I have a little problem. I'm developing app with Angular 4 and I would like to us it in combination with Node (mainly for API). So I tried to start both servers, and use it that way, but as i'm currently developing at local machine, so maybe there is better alternatives? Something like MEAN (MongoDb Express Angular Node) combination, but all of those are quite hard to use, there is lack of documentation, and those uses angular 2 instead of 4. I prefer MEAN stack, but I can't find one that are maintained and up to date.
Thank you for your help.
EDIT:
As some answers implied I will properly describe what I did to achieve what I need.
Here is what I have tried:
Having two tools (Node and Angular) to communicate to each other via http protocol (actually this kind'a worked, but node wasn't stable, it broke with connection error to db and Angular would not get response from it until it crashes)
Tried to use Angular proxy settings to enable link rerouting to have wildcard for all links that starts with /api/
Installed few MEAN stacks, tried to test it's potential and decided that it's way to over the limit to achieve what I want.
Tried to combine two tools into one by starting both at same port (as you might imagine, this broke both of them).
You can use MongoDB in your API whithout problems, and also it's not that hard to use it, its really more simple thant DataBases that have relational objects, like SQL, PostGRES and so on. I would recommend Hapi instead Express, but Express have a lot of information on the web, so if you are not confortable with re-search in documentation, Express would be you better option.
When i started developing in node.js it take me time to figure out that tutorials and videos only give me headache, old videos that doesent use the same Frameworks as i do, or not in the same version. So i started to take deep into the documentation, i used to pass more time reading than writing code, and it help me a lot.
The most common/simple is MEAN API, find something you like and stick with it ^-^

What are the basic important things that will be needed to develop an application with ionic2 including Mongodb?

I have been previously learning, how to make applications with ionic2, Angular2 --> For Frontend.
And backend--> Firebase.
Now I have to change my backend to MongoDB.So, What all important things I should learn in order to use MongoDB?Please suggest.
Thank you.
Note: Please let me know if any more inputs are needed relating to this.
You can learn following to accomplish a decent backend with mongodb :
Learn mongodb with some latest aggregation features to make sure the your queries are optimized. mongodb has great documentation which can help you. Install mongo shell and play around to get hands on it.
Make sure your have good cluster-replica management to make sure your data is backed up properly.
Extremely important, make sure you add indexes on the fields which you find are reference points for majority of your queries. Trust me, adding a simple index to a commonly referenced field makes a huge difference. Also, just as an addon, check what type of index you would need based on your requirement. There are various available in mongodb documentation.
Make sure you structure your collections in such a way that there are not many $looups(inner joins) however still making sure how you can keep it scalable. It totally depends on your application schema though.
Try hands on Mongodb Map-Reduce as its very handy.
Install RoboMongo, a GUI client for mongodb if you are used to stuff like phpmyadmin.
Node js(optional if required) :
1. Learn express which is really easy. It will help you to get started with basic routing, cors handling , middlewares and such http-web related stuff.
2. Mongoose, which is a mongodb package for node. There are many others, however if you are familiar with ORM then mongoose is really handy to get you going with simple steps.
3. Authentication for RESTful APIs : There are many options available to be honest. However, based on my experience, you can use passport-jwt, which is really simple and effective.