MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

цена на ключове в база данни с JSON документи (mongodb, elasticsearch)

Правилно сте забелязали, че документите ще имат различен размер. Така ще спестите поне 15 bytes на документ (60% за подобни документи), ако решите да приемете втората схема. Това ще завърши в нещо като 140MB за вашите 10 million записи. Това ще ви даде следното предимство:

  • Икономии на HDD. Единственият проблем е, че гледайки цените на текущия твърд диск, това е почти безполезно.
  • Спестяване на RAM. В сравнение с твърдите дискове, това може да бъде полезно за индексиране. В mongodb работен набор от индекси трябва да се поберат в RAM, за да се постигне добро изпълнение . Така че, ако ще имате индекси на тези две полета, не само ще спестите 140MB пространство на HDD, но също и 140MB потенциално RAM пространство (което всъщност се забелязва).
  • Вход/изход . Много тесни места се случват поради ограничението на системата за вход/изход (скоростта на четене/запис от диска е ограничена). За вашите документи това означава, че със схема 2 можете потенциално да четете/пишете twice as many documents за 1 секунда.
  • мрежа . В много ситуации мрежата е дори по-бавна от IO и ако вашият DB сървър е на различна машина, тогава вашият сървър за приложения данните трябва да се изпращат по кабела. Освен това ще можете да изпращате два пъти повече данни.

След като казах за предимствата, трябва да ви кажа един недостатък за малки клавиши:

  • четимост на базата данни. Когато направите db.coll.findOne() и вижда {_id: 1, t: 13423, a: 3, b:0.2} доста е трудно да се разбере какво точно се съхранява тук.
  • четимост на приложението подобно с базата данни, но поне тук можете да имате решение. С логика на картографиране, която трансформира currentDate към c и price към p можете да напишете чист код и да имате кратка схема.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Намерете документи, където едно поле се сравнява с друго в масив

  2. Схема за потребителски оценки - База данни за ключ/стойност

  3. Анализирайте ISO8601 низ от дата към дата с UTC часова зона

  4. Няма достъп до com.mongodb.MongoClientSettings - MongoDB Java драйвер 3.7+

  5. Използване на MongoDB и Neo4j заедно