How do I optimize my MongoDB Database?

Reynevan

The problem:

I have two collections in my database:

// UnifiedPost
public class UnifiedPost
{
    public UnifiedPost() { Id = ObjectId.GenerateNewId(); }

    [BsonId]
    public ObjectId Id { get; set; }

    public int OriginalId { get; set; }
    public string Thumbnail { get; set; }
    public string Preview { get; set; }
    [AlsoNotifyFor("IsVideo")]
    public string FullSized { get; set; }
    public char Rating { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
    public string Dimensions { get { return string.Format("{0}x{1}", Width, Height); } }
    public int Score { get; set; }
    [MongoDB.Bson.Serialization.Attributes.BsonIgnore]
    public string Tags { get; set; }
    public ICollection<ObjectId> TagIds { get; set; }
    public char Site { get; set; }

    public bool IsVideo { get { return FullSized.Contains(".mp4") || FullSized.Contains(".webm"); } }

    public string UniversalId { get; set; } // UNIQUE index (Site + Original id; fe. S3001)
}

// Tag
public class Tag
{
    public Tag() { }

    public ObjectId Id { get; set; }
    public string Name { get; set; }
}

There's around 4 million entries in the Posts collection as of now. Queries such as db.Posts.find(), db.Posts.find( { "_id": ObjectId(xyz) } ) and db.Posts.find( { "UniversalId": "S3001" } ) are returning results in a matter of ms.

On the other hand, queries like .find( { "Site": "S" } ) or.find( { "OriginalId": {$lt: "25" } })` can take even 30s to complete.

What I already have:

I'm using an extension method to add/update a unique key to the UniversalId property:

if (!createIndex)
{
    await postsColl.Indexes.AddOrUpdateAsync(new CreateIndexOptions() { Unique = true }, new IndexKeysDefinitionBuilder<UnifiedPost>().Ascending(o => o.UniversalId));
    createIndex = true;
}

What I'm unsure of:

  • I don't know if I should use indexes for any other fields, and what types of indexes I should use, for that matter.
  • Site holds a char value and there are ~6 possibilities in the collection as of now. It might or might not increase further. *OriginalId is just an int that represents the post on the original site. This id isn't unique, as there is roughly as many 1s, 2s, 3s (and so on) as there are different Sites in the collection.

What would be the best way to optimize the database so I can query posts based on these properties with a reasonable operation time?

Sergio Tulentsev

What would be the best way to optimize the database so I can query posts based on these properties with a reasonable operation time?

Add indexes on those fields, of course.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How do I optimize my query in MySQL?

From Dev

How do I optimize my query in MySQL?

From Dev

How can i optimize my database queryset in a django view

From Dev

How can I optimize my database query without denormalizing?

From Dev

How can i optimize my database queryset in a django view

From Dev

How do I optimize* this?

From Dev

How do I optimize my ul navigation for mobile

From Dev

How do I optimize my RAND() function for large tables?

From Dev

How do I debug my mongodb indexes?

From Dev

How do I collapse these rows in my database?

From Dev

How do I optimize TeamViewer?

From Dev

.Net Database how do I properly close my database connections?

From Dev

How do I insert my imploded array into my database?

From Dev

How can I optimize my sudoku solver?

From Dev

How can I optimize my javascript object?

From Dev

How can i optimize my Jquery code?

From Dev

How can i Optimize my sql query

From Dev

How do I retrieve attributes programmatically using jquery in order to optimize my event handlers?

From Dev

How do I retrieve attributes programmatically using jquery in order to optimize my event handlers?

From Dev

How do I optimize ActiveRecord queries and speed up my HAML partial which is rendered 1000 times in Rails?

From Dev

How do I write a script to automatically optimize all the PNGs in my MediaWiki images directory?

From Java

How do I drop a MongoDB database from the command line?

From Dev

How do I drop a MongoDB database using PyMongo?

From Dev

How do i store data into a MongoDb Database using Java?

From Dev

how do i search for an entry in mongodb database using java in netbeans?

From Java

How do I update the messageRead attribute in my MongoDb object?

From Dev

How do I not save data in my reduce() function in MongoDB?

From Dev

How do I transform my SQL query to a MongoDB query?

From Dev

How do I encrypt OAuth secret/tokens in my rails database?

Related Related

  1. 1

    How do I optimize my query in MySQL?

  2. 2

    How do I optimize my query in MySQL?

  3. 3

    How can i optimize my database queryset in a django view

  4. 4

    How can I optimize my database query without denormalizing?

  5. 5

    How can i optimize my database queryset in a django view

  6. 6

    How do I optimize* this?

  7. 7

    How do I optimize my ul navigation for mobile

  8. 8

    How do I optimize my RAND() function for large tables?

  9. 9

    How do I debug my mongodb indexes?

  10. 10

    How do I collapse these rows in my database?

  11. 11

    How do I optimize TeamViewer?

  12. 12

    .Net Database how do I properly close my database connections?

  13. 13

    How do I insert my imploded array into my database?

  14. 14

    How can I optimize my sudoku solver?

  15. 15

    How can I optimize my javascript object?

  16. 16

    How can i optimize my Jquery code?

  17. 17

    How can i Optimize my sql query

  18. 18

    How do I retrieve attributes programmatically using jquery in order to optimize my event handlers?

  19. 19

    How do I retrieve attributes programmatically using jquery in order to optimize my event handlers?

  20. 20

    How do I optimize ActiveRecord queries and speed up my HAML partial which is rendered 1000 times in Rails?

  21. 21

    How do I write a script to automatically optimize all the PNGs in my MediaWiki images directory?

  22. 22

    How do I drop a MongoDB database from the command line?

  23. 23

    How do I drop a MongoDB database using PyMongo?

  24. 24

    How do i store data into a MongoDb Database using Java?

  25. 25

    how do i search for an entry in mongodb database using java in netbeans?

  26. 26

    How do I update the messageRead attribute in my MongoDb object?

  27. 27

    How do I not save data in my reduce() function in MongoDB?

  28. 28

    How do I transform my SQL query to a MongoDB query?

  29. 29

    How do I encrypt OAuth secret/tokens in my rails database?

HotTag

Archive