it-swarm-eu.dev

NoSQL vs Ostatní SQL Drupal Nastavení)

Jaké jsou výhody spuštění NoSQL (ex MongoDB) oproti MySQL, PostGRE SQL nebo MSSQL v Drupalu? Jsou výhody plynoucí z pouhého použití úložiště nebo je třeba změnit některou Drupal konfigurace)?

14
Kevin

MongoDB lze použít k uložení většiny nebo všech vašich entit do rychlého úložiště orientovaného na dokumenty. Tento typ úložiště se škáluje mnohem lépe než standardní úložiště založené na SQL, které máme v jádru Drupal jádro (které je založeno na schématu „jedna tabulka na pole“).

V současném stavu Drupal 7) byste měli:

  • Základní tabulka entity uložené v SQL (tj. Tabulka uživatelů, tabulka uzlů atd.)
  • Všechna pole uložená v SQL
  • Vlastnosti entit z jejich základních tabulek byly duplikovány v MongoDB

To umožňuje rychlé dotazování na entity na MongoDB a schopnost přidávat komplexní indexy, které nepodporuje žádná databáze SQL opensource (včetně indexů napříč tabulkami). Zároveň neztratíte interoperabilitu, protože základní tabulka entity je stále uložena v SQL a mohou se k ní připojit moduly, které jsou stále pouze SQL (jako Flag).

Tento typ rychlého dotazování je k dispozici díky mechanismu EntityFieldQuery, způsobu, jak abstraktně budovat dotazy na entity, jejich vlastnosti a pole. Výchozí implementace v jádru převádí tyto dotazy do SQL, ale modul MongoDB má plnohodnotnou implementaci, která může tyto dotazy uspokojit přímo z MongoDB.

Díky backendu EntityFieldQuery for Views můžete tuto sílu snadno využít pomocí nástrojů, na které jste zvyklí. Jedinou nevýhodou je, že vztahy nejsou podporovány (ale v praxi je i tak jen zřídka potřebujete - a to lze obejít tak, že do objektu entity vložíte další data a přidáte je jako další vlastnosti entity).

Stručně řečeno, jakmile je výkon dotazu problém ve vašem projektu, který se stane, jakmile máte významný datový soubor (řekněme od několika desítek tisíc entit na daném typu entity), MongoDB je čistý zisk pro velmi málo nedostatků. Vysoce doporučeno.

13
Damien Tournoud

MongoDB a podobné jsou navrženy tak, aby ukládaly strukturovaná (hierarchická) data relativně flexibilním způsobem.

Například v Drupal 7, když používáte field_sql_storage, každé pole dostane vlastní tabulky. Když k typu obsahu připojíte 10 polí, skončí v databázi 10 tabulek. Když načtete tento uzel, field_sql_storage provede dotaz na pole a na uzel (nebo více uzlů při použití node_load_multiple).

Pokud použijete mongodb_field_storage , můžete uložit všechna pole uzlu do jednoho dokumentu a získat pomocí jediného dotazu.

Můžete také ukládat další věci, jako hlídací pes, relace, mezipaměť, bloky v MongoDB .

MySQL však stále potřebujete, MongoDB jej nenahrazuje (pouze pro konkrétní části).

Další výhodou je, že je jednodušší škálovat MongoDB , můžete do clusteru přidat mnoho serverů a sdílet mezi nimi data.

7
Berdir

Výhody přicházejí s nevýhodami.

Drupal jako celek nelze přepnout na MongoDb, takže budete muset podporovat dvě databáze a ujistit se, že spolu dobře fungují.

Mnoho modulů nebude schopno pracovat s mongodbem, takže ztratíte interoperabilitu.

Pokud nemáte naléhavou potřebu (protože část vašeho systému nezvládne počet žádostí nebo množství dat), nepřepnul bych. A i když se začnete blížit k limitům, podívejte se na házení hardwaru na problém nebo naladění před přepnutím.

Myslel jsem, že už jsem na to odpověděl, na SO je téměř duplikát

5
Jeremy French