Skip to content

Use alternative NoSQL databases? #20

Description

@jashsayani

MongoDB is a great NoSQL database choice, but I had a few concerns:

  1. I don't want to rely on MongoLab or another Database-as-a-service. I learn from experiences.
  2. I don't want to install MongoDB on a compute instance and update versions, feed it RAM

I want to use either Google Datastore or Amazon DynamoDB. Both are good NoSQL database choices.
Google: https://cloud.google.com/datastore/
Amazon: https://aws.amazon.com/dynamodb/details/

I think it would be nice to be able to interface with alternative NoSQL databases other than MongoDB.

Activity

  1. duergner commented on Jan 29, 2016

    @duergner

    Should be fairly easy to add if I'm right. You would just need to implement a DatabaseAdapter similar to https://github.com/ParsePlatform/parse-server/blob/master/ExportAdapter.js for your desired database

  2. gfosco commented on Jan 29, 2016

    @gfosco
    Contributor

    See the wiki about ExportAdapter... There is still some work to do in modularizing the database layer, but it's part of the vision for sure.

  3. davidaik commented on Jan 29, 2016

    @davidaik

    +1 I don't want to rely on MongoLab either. It'll be awesome if we have full control over the db.

  4. francocorreasosa commented on Jan 29, 2016

    @francocorreasosa

    What about RethinkDB?

  5. francocorreasosa commented on Jan 29, 2016

    @francocorreasosa
  6. richardkazuomiller commented on Jan 30, 2016

    @richardkazuomiller

    Is the plan for Parse to use the ExportAdapterDatabaseAdapter class to do the migration to databases other than MongoDB? For example, if I were to implement my own ExportAdapterDatabaseAdapter for DynamoDB, will I be able to have Parse use that adapter to fill up my new DynamoDB table(s)?

  7. gfosco commented on Jan 30, 2016

    @gfosco
    Contributor

    Not much (famous last words).. Turn transform.js into ExportTransformAdapter.js and create a TransformAdapter (like FilesAdapter) which defaults to it. Make Schema.js and any other module which accesses transform use the adapter class, and allow it to be injected at initialization.

  8. gfosco commented on Jan 30, 2016

    @gfosco
    Contributor

    Of course, there's a lot more to it I'm sure. The same methods used in ExportAdapter may not always fit some other system, or other unforeseen differences..

  9. lacker commented on Jan 30, 2016

    @lacker
    Contributor

    Yeah honestly this part of the design is a bit wack. Ideally all the Mongo access should be contained within DatabaseAdapter and ExportAdapter but at some point we got to a tradeoff between feature completeness and modular design, and decided to move towards feature completeness. Especially around supporting some of the stranger $ operators. I'm not sure how hard it would be to make more adapters and it may or may not be tractable.

  10. richardkazuomiller commented on Jan 30, 2016

    @richardkazuomiller

    I never used Parse, but I know people who did and it seems like the main of it was that they didn't have to provision and maintain their own servers. In my opinion, the stateless application layer is not so hard to maintain but going from no servers to maintaining a MongoDB replica set or even working with MongoLab is a big jump for people. I think complete support for adapters so we can use DBaaS like Google Cloud Datastore and DynamoDB should be a priority.

  11. jashsayani commented on Jan 30, 2016

    @jashsayani
    Author

    I think we need to:

    1. Modularize/isolate the database code. The database adapter should have a small transport layer that is MondoDB. Optionally, you can write your own transport layer with a different database provider.
    2. Clearly document the APIs for the database part, so its really easy to read docs/comments and implement custom transport layers.
    3. Work on transport layers for Google Cloud Datastore and Amazon DynamoDB. If 1 and 2 are in place, I am sure the community will start writing these.
  12. richardkazuomiller commented on Jan 30, 2016

    @richardkazuomiller

    @jashsayani sounds like a plan d(^_^)

  13. 93 remaining items

  14. flovilmart commented on Oct 7, 2016

    @flovilmart
    Contributor

    The Postgres adapter lacks documentation but is covered the majority of tests. As for other database adapters, I don't believe it's the responsibility of that project to implement other of them. As always, we welcome contributions!

  15. noder199 commented on Oct 7, 2016

    @noder199

    Sometimes I wish there was a bounty system on github to help reward contributors, I simply don't have the time to contribute. I would not mind putting some $ on the line for a google datastore adapter + documentation however. Not a lot but just for the sake of providing incentives. Anyway I digress, I will personally look into using the postgres adapter. If anyone can share their experiences using it, let me know.

  16. jmdobry commented on Oct 7, 2016

    @jmdobry

    Sometimes I wish there was a bounty system on github to help reward contributors

    https://www.bountysource.com/

  17. mnearents commented on Oct 9, 2016

    @mnearents

    At the risk of sounding dumb, what would the benefit of using the Postgres adapter over MongoDB be? I am on Heroku using Mlab and I've wondered if using Heroku's built in Postgres storage would be cheaper or have some other benefit.

  18. kulshekhar commented on Oct 11, 2016

    @kulshekhar
    Contributor

    @flovilmart

    The Postgres adapter lacks documentation but is covered the majority of tests.

    Does this mean that it is ready for use in production?

    If it's not, I'd like to contribute to help it get there quicker. Any pointers on where I can start?

    Now that we can create and manage projects on Github, it might make sense to start one for completing Postgres support. This way people like me can see what's already done and what we can work on to help out.

  19. noder199 commented on Dec 18, 2016

    @noder199

    Anyone interested in doing a fundraiser via bountysource to help promote the creation of a Google Datastore Adapter?

  20. noder199 commented on Dec 18, 2016

    @noder199

    @saleeh93 Why did you halt working on Google datastore adapter? Did you come across some sort of limitation?

  21. saleehk commented on Dec 24, 2016

    @saleehk

    @noder199 Yea. there is only some limited query supported by Google datastore. I stopped working on that

  22. noder199 commented on Dec 25, 2016

    @noder199

    Ah alright, hmm was there ever a dynamodb effort made by anybody? Any limitations involved with that database? Dynamo has been around for awhile so it should be more capable, but I know it sucks at storing certain data types...

  23. noder199 commented on Mar 2, 2017

    @noder199

    @saleeh93

    I am gonna take a look at some of your code. Would you mind telling me exactly what limitations you faced when it came to querying?

  24. noder199 commented on Mar 14, 2017

    @noder199

    Mongodb atlas is a cheaper aternative to mlab and I am switching to that service as my database needs the extra storage. I won't be needing datastore, but I'd still welcome any effort for an adapter if google makes changes to its api.

  25. flovilmart commented on Sep 10, 2017

    @flovilmart
    Contributor

    Closing as we added support to Postgres a while ago.

  26. added
    type:featureNew feature or improvement of existing feature
    and removed on Dec 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:featureNew feature or improvement of existing feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions