Developers May 21, 2020

Who is using Firestore? 🙋‍♂️

Anton Fenske @fenske

Hi folks,

I've been lately considering different options for storing my SaaS' data.

I needed something that required 0-setup, no-maintenance, and had a good-enough API.

Long story short, I once again landed with Firestore. It has its pros and cons but for a small SaaS it looks more or less legit (especially given its integration with the Firebase Authentication).

Anyone else is using it? What's your experience?

  1. 3

    I use Firestore for https://letterbase.io and it works quite well. I find that nothing beats it in terms of getting something up and running quickly.

    Also, if it works for Indie Hackers, it'll likely work for you too :)

  2. 3

    Firestore is nice, but is quite limited. If you're just looking for a way to plonk documents in collections with ids, then it's a good fit. It scales well and costs almost nothing while you work on product market fit.

    The gotchas are it's not like MySQL, the query options are very limited. You can't even to do != operator.

    So the TLDR: firstore is a good document store, not a good SQL-like database where you can have everything denormalized.

    1. 1

      I've worked around those SQL restraints by syncing my Firestore database with Algolia. Algolia's search/filter API is very much like SQL.

  3. 2

    Hi Anton, sorry for shameless plug, just very proud of what we are doing at https://deta.sh.
    We just launched our DB product which is faster and cheaper than a Firestore and targeted exactly towards your use case. Also 0 setup/maintenance with great SDKs/API.
    Happy to answer any questions.

    1. 1

      I like how you niche your product. One thing that I noticed is querying capabilities. I assume it's getting a value by key only at this point, right?

      1. 1

        Actually, we have powerful query/search capabilities: https://docs.deta.sh/docs/lib#fetch
        You could do pretty complex queries on nested data.
        Should also be much faster than Firestore :)

        1. 1

          Oops. Missed that. Let me check it out. 👍

          When you say it's much faster than Firestore it sounds bold. 😃 How did you benchmark it?

          1. 1

            I ran the tests on my laptop but connecting to both production endpoints. I wrote 100 items (3 times) using Deta's put and Firestore's setmethods from the respective official Python library:

            For reference, I live in Berlin.

            Deta Base (Frankfurt): 36.6ms/write
            Firestore (Zürich): 89.3ms/write

            BUT we achieve a consistent average of 8ms/write on AWS using our Python Library. So if you run on AWS, you will get more out of Base. We are happy to support your region.

            Unfortunately I couldn't install or test Firestore in our runtime. Will do soon.

            1. 1

              Wow! Sounds great!

              Btw, I didn’t manage to find pricing info. How does it work?

              1. 1

                We're still working on it. But it's most likely that our next tier will be 5GB storage and ~ 100k ops/month for $5. This price will also include other services like functions, email, cron, etc.
                Happy to talk and find a pricing that works for you, my email is [email protected]

  4. 2

    Firestore is fine to start, but it can become dramatically more expensive with just a couple of false moves.

    Great for prototyping, but Firebase used to be notorious for doing way too many reads and quickly costing a ton of money as you scale up.

    Not sure if it's gotten better, but one approach I like is, treating it like a database inside your backend app (and not reading/writing the database directly, except for prototyping). Makes it easier to control your read/write usage and migrate databases in the future.

    I would recommend having a clear migration path to something like Node+MongoDB as things scale. Pick a number (maybe $50/mo) and move anything costing you more than that.

    They're not going to help you figure out which tables are sucking up your reads/writes though.

    On another note, if you ever do find 0-setup, no-maintenance, and has a good-enough API, but not crazy expensive, let me know!

    1. 2

      One alternative that might fit this category is FaunaDB (https://fauna.com/). At first glance, it has a couple of advantages over Firestore but I didn't go for it because integrating with a social login looked like a bit of a hassle (and I needed Github).

  5. 1

    Pros:

    • Quick Setup
    • Scaling
    • Serverless
    • Good for less complex api's

    Cons:

    • If using functions with firestore, loading of firestore modules takes around 2-3secs
    • Query limitations (!=, search is nearly not possible and need to look for alternatives)
    • Indexing becomes a nightmare once you have more query params (limit of 200 only)
    • Not suitable for managing counters easily and 1 Write/second limit on document

    However, still we use firestore for its scalable nature and the above cons has alternatives with which we are living with. But would be great to see improvements in the future!

    • Will keep updating this list :)
  6. 1

    using firestore at blocksnacks.com.

    The integrated experience of firebase with auth + store + analytics etc makes the SQL tradeoffs worth it.

  7. 1

    I use Firebase for my projects that need a backend. Ceev.io uses Firebase with their realtime database (Firestore had just came out when I started Ceev, so I didn't want to use it yet), but I have a new project I'm working on that I set up to use Firestore. This will help me decide if I want to switch Ceev to firestore.

    So far I like it. It really depends on your needs though, because as others have said, it's pretty limited with querying - I don't anticipate that being an issue with my projects.

    I'm a little worried about the pricing with reads/writes and if/how it will differ from the realtime database. Right now Ceev has had over 30,000 signups and decent traffic and I'm pretty sure I've paid Firebase less than $2 over the past 1.5yrs.

    1. 1

      Checked out Ceev. How come you don't charge per generated resume? 😃

  8. 1

    As others have said, querying is a big limitation of Firebase. Hopefully, they improve this soon. The advantage is that you have an integrated package of several adjacent services (authentication, messaging, analytics, etc) making life easier.

  9. 1

    If you dig into the source you will see that Indie Hackers is 😉😉

  10. 1

    Firestore is a very good idea to start with, but you have to know that it might shape the way you think and implement your usecases on higherlevel. As the database itself is not relational you have to be thinking of your data as document rather than tables with foreign keys and relations (I guess you already know this 😅), but at the end it's not a drastic mindset change and it's really worth the going over the learning curve with the value you get.

  11. 1

    I looked into it and added to one small toy project. The main issue with it is just searching for data when you can't get by ID. It also gets quite expensive very quickly :)

    In general, you will always have easier life if you stick with the CloudSQL Postgres from GCP rather than going with Firestore on the same google cloud :) From maintenance side Postgres requires 0 time, same as firestore, just cheaper to run and you have always a nice way to move to another cloud provider.

  12. 1

    The setup and ease of use makes it a great choice for most projects, in my opinion.

    Having recently switched to Firebase/Firestore for my two latest projects, I must say I'm starting to really enjoy Firestore. Coming from an SQL background, many consepts seams counter-intuituve, i.e. data duplication, but Firestore has a lot of advantages (the real-time updates are neat!).

    The query functionality feels basic, but with propper database design, Firebase doesn't fall short in terms of applicability.

    As others have noted, you do need to understand how to efficiently do reads/writes to aviod a heafty price tag at scale. I think that's a small price to pay.

  13. 1

    I recently used firebase for fireful.io, my beta firebase form builder project.

    I used it on my website for some of the content and storing emails. I found the JS SDK to be heavy making a negative impact on load speed. Its nice to prototype but I'm already thinking of setting up postgres for more advanced uses and I can just use axios instead.

    For my SaaS app I used firestore completely and had no issues. My advice would be to always prioritize your reads (queries) when designing your structure so you don't run into surprises!

    Good luck!

  14. 1

    I have used it, but 99% of the time you're better off just using Postgres.

  15. 1

    I‘m using it for my App WeBurn on iOS. Don’t have any Backend experience and Firestore helped me to build my first App without having to learn too much new stuff so I can ship faster.

    I’m still figuring out how to work with that data though. In the Interface I can easily find users to solve problems if a bug occurred. But didn’t do Analytics with that data yet.

  16. 1

    We are. In fact we use a lot of Firebase products.

    A quick intro about Firestore https://horizontech.dev/blogs/Ravi/Introduction-to-Firestore

  17. 1

    I'm working on headkanon.com with it, it's been pretty useful EXCEPT for when doing queries, which are very limited by design (see https://firebase.google.com/docs/firestore/query-data/queries). If you want to do things like complex joins or filter with complex queries, you'll end up having to write those manually in code or somewhere else.

    What is your SaaS going to be doing? Having a better idea of the type of product might help give better feedback.

    Other things:

    I've found react-redux-firebase to be a really useful library to connect it with React.

    Firebase Authentication is a godsend.

    For complex queries on a smaller number of documents, I found that Algolia as an integration is pretty helpful. Let me know if you have any other questions!

    1. 1

      "it's been pretty useful EXCEPT for when doing queries, which are very limited by design" - out of curiosity, what type of query didn't you manage to implement?

      "What is your SaaS going to be doing?" - tech skills assessment problem. I essentially need to capture data on test runs per user and have general data about available challenges.

  18. 1

    So to get up and running as quickly as possible I also use Firebase (at this point I am basically using all of the services) for motionstoryline.com. As a frontend developer, another point to add to low setup and maintenance is that there is no backend with Firestore, it's just a frontend code request and the API and backend is done for you. This worked well for me because initially I did not know what my backend requirements would be yet, so I chose a flexible approach of building out serverless as I needed them instead of a traditional monolith. I am certainly not saying Firestore has the querying power or performance optimizations built in that SQL has. But I like the idea of being flexible when I do not know exactly what all of my requirements are yet, especially starting off a project. Iterating through data that each was assigned a unique key in a specific order was a bit of a curveball for me, but I just manually set another field called order that gets set by my frontend code and it works, although it might be a bit of a hack, not sure if there is a better way to do this. But now the query from my frontend code can also include an "order by" setting and I use my manually set order key instead of the generated name.

  19. 1

    This comment was deleted a month ago.

    1. 1

      Honestly, I have no plans for China. That's too aspirational atm. 😅 But thanks for the hint. ✌️

Recommended Posts