Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3875752
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T22:18:11+00:00 2026-05-19T22:18:11+00:00

I am working on a system, which will run on GAE, which will have

  • 0

I am working on a system, which will run on GAE, which will have several related entities and I am not sure of the best way to store the data. This post is a request for advice from others who may have similar experience….

The system will have users, with profile data and an image. Those users will be able to create “events” and add journal entries to it. For the purpose of the system, the “events” will likely have 1 or 2 journal entries in them, and anything over 10 would likely never happen. Other users will be able to add comments to users’ entries as well, where popular ones may have hundreds or even thousands of comments. When a random visitor uses the system, they should be able to see the latest events (latest, being defined by those with latest journal entries in them), search by tag, and a very perform basic text search. Then upon selecting an event to view, it should be displayed with all journal entries, and all user comments, with user images alongside comments. A user should also have a kind of self-admin page, to view/modify/delete their events and to view/modify/delete comments they have made on other events. So, doing all this on a normal RDBMS would just queries with some big joins across several tables. On GAE it would obviously need to work differently. Here are my initial thoughts on the design of the entities:

  • Event entity – id, name, timstamp, list
    property of tags, view count,
    creator’s username, creator’s profile
    image id, number of journal entries
    it contains, number of total comments
    it contains, timestamp of last update to contained journal entries, list property of index words for search (built/updated from text from contained journal entries)
  • JournalEntry entity – timestamp,
    journal text, name of event,
    creator’s username, creator’s profile
    image id, list property of comments
    (containing commenter username and
    image id)
  • User entity – username, password hash, email, list property of subscribed events, timestamp of create date, image id, number of comments posted, number of events created, number of journal entries created, timestamp of last journal activity
  • UserComment entity – username, id of event commented on, title of event commented on
  • TagData entity – tag name, count of events with tag on them

So, I’d like to hear what people here think about the design and what changes should be made to help it scale well. Thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T22:18:12+00:00Added an answer on May 19, 2026 at 10:18 pm
    • Rather than store Event.id as a property, use the id automatically embedded in each entity’s key, or set unique key names on entities as you create them.
    • You have lots of options for modeling the relationship between Event and JournalEntry: you could use a ReferenceProperty, you could parent JournalEntries to Events and retrieve them with ancestor queries, or you could store a list of JournalEntry key ids or names on Event and retrieve them in batch with a key query. Try some things out with realistically-distributed dummy data, and use appstats to see what works best.
    • UserComment references an Event, while JournalEntry references a list of UserComments, which is a little confusing. Is there a relationship between UserComment and JournalEntry? or just between UserComment and Event?
    • Persisting so many counts is expensive. When I post a comment, you’re going to write a new UserComment entity and also update my User entity and a JournalEntry entity and an Event entity. The number of UserComments you expect per Event makes it unwise to include everything in the same entity group, which means you can’t do these writes transactionally, so you’ll do them serially, and the entities might be stored across different network nodes, making the whole operation slow; and you’ll also be open to consistency problems. Can you do without some of these counts and consider storing others in memcache?
    • When you fetch an Event from the datastore, you don’t actually care about its list of search index words, and retrieving and deserializing them from protocol buffers has a cost. You can get around this by splitting each Event‘s search index words into a separate child EventIndex entity. Then you can query EventIndex on your search term, fetch just the EventIndex keys for EventIndexes that match your search, derive the corresponding Events‘ keys with key.parent(), and fetch the Events by key, never paying for the retrieval or deserialization of your search index word lists. Brett Slatkin explains this strategy here at 14:35.
    • Updating Event.viewCount will fail if you have a lot of views for any Event in rapid succession, so you should try out counter sharding.

    Good luck, and tell us what you learn by trying stuff out.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm working on a little web crawler that will run in the system tray
I have a C++ program that will run on several machines that use a
I'm currently working on a system that in some cases will need to run
I'm working on a small bugtracking system which shows a list of bugs. For
I am working on a project that involves an embedded system which runs a
I'm working on a Linux based server system in which there are two network
The system I am currently working on requires some role-based security, which is well
I need to set up a system which will allow developers to request an
I've recently started working on a new application which will utilize task parallelism. I
I'm working with a system which had to create objects in one database based

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.