@mytechtoday/augment-extensions 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
- package/augment-extensions/workflows/beads-integration/README.md +143 -0
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
- package/augment-extensions/workflows/beads-integration/module.json +75 -0
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +300 -0
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +168 -10
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts +19 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +478 -63
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/types/gui.d.ts +62 -0
- package/cli/dist/types/gui.d.ts.map +1 -0
- package/cli/dist/types/gui.js +30 -0
- package/cli/dist/types/gui.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/gui-helpers.d.ts +23 -0
- package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
- package/cli/dist/utils/gui-helpers.js +159 -0
- package/cli/dist/utils/gui-helpers.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +232 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +900 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +559 -105
- package/package.json +17 -6
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
# NoSQL Databases
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document covers NoSQL database fundamentals, including when to use NoSQL, CAP theorem, eventual consistency, BASE properties, NoSQL types (document, key-value, column-family, graph), database selection criteria, common patterns, and limitations.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## When to Use NoSQL Databases
|
|
10
|
+
|
|
11
|
+
### Ideal Use Cases
|
|
12
|
+
|
|
13
|
+
**Use NoSQL databases when:**
|
|
14
|
+
- ✅ Schema changes frequently or is undefined
|
|
15
|
+
- ✅ Horizontal scaling is critical
|
|
16
|
+
- ✅ Data is unstructured or semi-structured
|
|
17
|
+
- ✅ Eventual consistency is acceptable
|
|
18
|
+
- ✅ Simple key-value lookups dominate
|
|
19
|
+
- ✅ Document-oriented data model fits naturally
|
|
20
|
+
- ✅ High write throughput is required
|
|
21
|
+
- ✅ Flexible data models are needed
|
|
22
|
+
|
|
23
|
+
**Examples:**
|
|
24
|
+
- Social media platforms (user profiles, posts, feeds)
|
|
25
|
+
- Real-time analytics (logs, metrics, events)
|
|
26
|
+
- Content management (articles, media, metadata)
|
|
27
|
+
- IoT applications (sensor data, telemetry)
|
|
28
|
+
- Session stores (user sessions, shopping carts)
|
|
29
|
+
- Caching layers (frequently accessed data)
|
|
30
|
+
- Recommendation engines (user preferences, behavior)
|
|
31
|
+
|
|
32
|
+
### When to Use Relational Instead
|
|
33
|
+
|
|
34
|
+
**Use relational databases when:**
|
|
35
|
+
- ❌ ACID compliance is required
|
|
36
|
+
- ❌ Complex queries with JOINs are needed
|
|
37
|
+
- ❌ Data integrity is critical
|
|
38
|
+
- ❌ Transactions across multiple entities are essential
|
|
39
|
+
- ❌ Reporting and analytics with complex aggregations
|
|
40
|
+
- ❌ Schema is stable and well-defined
|
|
41
|
+
- ❌ Strong consistency is required
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## CAP Theorem
|
|
46
|
+
|
|
47
|
+
### Understanding CAP
|
|
48
|
+
|
|
49
|
+
**CAP Theorem**: A distributed system can provide at most two of three guarantees:
|
|
50
|
+
|
|
51
|
+
1. **Consistency (C)**: All nodes see the same data at the same time
|
|
52
|
+
2. **Availability (A)**: Every request receives a response (success or failure)
|
|
53
|
+
3. **Partition Tolerance (P)**: System continues to operate despite network partitions
|
|
54
|
+
|
|
55
|
+
**Trade-offs:**
|
|
56
|
+
- **CP (Consistency + Partition Tolerance)**: Sacrifice availability during partitions
|
|
57
|
+
- **AP (Availability + Partition Tolerance)**: Sacrifice consistency during partitions
|
|
58
|
+
- **CA (Consistency + Availability)**: Not possible in distributed systems with partitions
|
|
59
|
+
|
|
60
|
+
### Database Classifications
|
|
61
|
+
|
|
62
|
+
**CP Databases (Consistency + Partition Tolerance):**
|
|
63
|
+
- MongoDB (with majority write concern)
|
|
64
|
+
- HBase
|
|
65
|
+
- Redis (with replication)
|
|
66
|
+
- Consul
|
|
67
|
+
|
|
68
|
+
**AP Databases (Availability + Partition Tolerance):**
|
|
69
|
+
- Cassandra
|
|
70
|
+
- DynamoDB
|
|
71
|
+
- Riak
|
|
72
|
+
- CouchDB
|
|
73
|
+
|
|
74
|
+
**Note**: Most modern databases allow tuning consistency/availability trade-offs
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## BASE Properties
|
|
79
|
+
|
|
80
|
+
### BASE vs ACID
|
|
81
|
+
|
|
82
|
+
**BASE**: Alternative to ACID for distributed systems
|
|
83
|
+
|
|
84
|
+
- **Basically Available**: System guarantees availability
|
|
85
|
+
- **Soft state**: State may change over time without input (due to eventual consistency)
|
|
86
|
+
- **Eventual consistency**: System will become consistent over time
|
|
87
|
+
|
|
88
|
+
**Comparison:**
|
|
89
|
+
|
|
90
|
+
| Property | ACID (Relational) | BASE (NoSQL) |
|
|
91
|
+
|----------|-------------------|--------------|
|
|
92
|
+
| Consistency | Strong | Eventual |
|
|
93
|
+
| Availability | May sacrifice | Prioritized |
|
|
94
|
+
| Partition Tolerance | Limited | High |
|
|
95
|
+
| Transactions | Multi-row | Limited |
|
|
96
|
+
| Scalability | Vertical | Horizontal |
|
|
97
|
+
| Use Case | Financial, critical data | High-scale, flexible data |
|
|
98
|
+
|
|
99
|
+
### Eventual Consistency
|
|
100
|
+
|
|
101
|
+
**Definition**: All replicas will eventually converge to the same value
|
|
102
|
+
|
|
103
|
+
**Example:**
|
|
104
|
+
```javascript
|
|
105
|
+
// Write to primary node
|
|
106
|
+
await db.users.updateOne(
|
|
107
|
+
{ _id: userId },
|
|
108
|
+
{ $set: { status: 'active' } }
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
// Read from replica (may return old value temporarily)
|
|
112
|
+
const user = await db.users.findOne({ _id: userId });
|
|
113
|
+
// user.status might still be 'inactive' for a short time
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Strategies:**
|
|
117
|
+
- **Read-your-writes consistency**: User sees their own writes immediately
|
|
118
|
+
- **Session consistency**: Consistency within a session
|
|
119
|
+
- **Monotonic reads**: Once a value is read, subsequent reads return same or newer value
|
|
120
|
+
- **Causal consistency**: Related operations are seen in order
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## NoSQL Database Types
|
|
125
|
+
|
|
126
|
+
### 1. Document Databases
|
|
127
|
+
|
|
128
|
+
**Characteristics:**
|
|
129
|
+
- Store data as documents (JSON, BSON, XML)
|
|
130
|
+
- Flexible schema
|
|
131
|
+
- Nested data structures
|
|
132
|
+
- Rich query capabilities
|
|
133
|
+
|
|
134
|
+
**Examples:**
|
|
135
|
+
- MongoDB
|
|
136
|
+
- CouchDB
|
|
137
|
+
- Couchbase
|
|
138
|
+
- RavenDB
|
|
139
|
+
|
|
140
|
+
**Use Cases:**
|
|
141
|
+
- Content management systems
|
|
142
|
+
- User profiles
|
|
143
|
+
- Product catalogs
|
|
144
|
+
- Event logging
|
|
145
|
+
|
|
146
|
+
**See**: `nosql-document-stores.md` for detailed guide
|
|
147
|
+
|
|
148
|
+
### 2. Key-Value Stores
|
|
149
|
+
|
|
150
|
+
**Characteristics:**
|
|
151
|
+
- Simple key-value pairs
|
|
152
|
+
- Fast lookups by key
|
|
153
|
+
- Limited query capabilities
|
|
154
|
+
- High performance
|
|
155
|
+
|
|
156
|
+
**Examples:**
|
|
157
|
+
- Redis
|
|
158
|
+
- DynamoDB
|
|
159
|
+
- Riak
|
|
160
|
+
- Memcached
|
|
161
|
+
|
|
162
|
+
**Use Cases:**
|
|
163
|
+
- Caching
|
|
164
|
+
- Session storage
|
|
165
|
+
- Shopping carts
|
|
166
|
+
- User preferences
|
|
167
|
+
|
|
168
|
+
**See**: `nosql-key-value-stores.md` for detailed guide
|
|
169
|
+
|
|
170
|
+
### 3. Column-Family Databases
|
|
171
|
+
|
|
172
|
+
**Characteristics:**
|
|
173
|
+
- Store data in column families (groups of columns)
|
|
174
|
+
- Optimized for write-heavy workloads
|
|
175
|
+
- Horizontal scalability
|
|
176
|
+
- Sparse data support
|
|
177
|
+
|
|
178
|
+
**Examples:**
|
|
179
|
+
- Cassandra
|
|
180
|
+
- HBase
|
|
181
|
+
- ScyllaDB
|
|
182
|
+
- Google Bigtable
|
|
183
|
+
|
|
184
|
+
**Use Cases:**
|
|
185
|
+
- Time-series data
|
|
186
|
+
- Event logging
|
|
187
|
+
- IoT sensor data
|
|
188
|
+
- Analytics
|
|
189
|
+
|
|
190
|
+
**Example: Cassandra**
|
|
191
|
+
```cql
|
|
192
|
+
-- Create keyspace (database)
|
|
193
|
+
CREATE KEYSPACE analytics WITH replication = {
|
|
194
|
+
'class': 'SimpleStrategy',
|
|
195
|
+
'replication_factor': 3
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
-- Create column family (table)
|
|
199
|
+
CREATE TABLE analytics.events (
|
|
200
|
+
user_id UUID,
|
|
201
|
+
event_time TIMESTAMP,
|
|
202
|
+
event_type TEXT,
|
|
203
|
+
event_data MAP<TEXT, TEXT>,
|
|
204
|
+
PRIMARY KEY (user_id, event_time)
|
|
205
|
+
) WITH CLUSTERING ORDER BY (event_time DESC);
|
|
206
|
+
|
|
207
|
+
-- Insert data
|
|
208
|
+
INSERT INTO analytics.events (user_id, event_time, event_type, event_data)
|
|
209
|
+
VALUES (uuid(), toTimestamp(now()), 'page_view', {'page': '/home', 'duration': '5s'});
|
|
210
|
+
|
|
211
|
+
-- Query by partition key
|
|
212
|
+
SELECT * FROM analytics.events WHERE user_id = ?;
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 4. Graph Databases
|
|
216
|
+
|
|
217
|
+
**Characteristics:**
|
|
218
|
+
- Store data as nodes and relationships
|
|
219
|
+
- Optimized for traversing relationships
|
|
220
|
+
- Rich query language for graph operations
|
|
221
|
+
- Flexible schema
|
|
222
|
+
|
|
223
|
+
**Examples:**
|
|
224
|
+
- Neo4j
|
|
225
|
+
- ArangoDB
|
|
226
|
+
- Amazon Neptune
|
|
227
|
+
- JanusGraph
|
|
228
|
+
|
|
229
|
+
**Use Cases:**
|
|
230
|
+
- Social networks
|
|
231
|
+
- Recommendation engines
|
|
232
|
+
- Fraud detection
|
|
233
|
+
- Knowledge graphs
|
|
234
|
+
|
|
235
|
+
**See**: `nosql-graph-databases.md` for detailed guide
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Database Selection Criteria
|
|
240
|
+
|
|
241
|
+
### Decision Framework
|
|
242
|
+
|
|
243
|
+
**1. Data Structure**
|
|
244
|
+
- **Structured, relational**: Relational database
|
|
245
|
+
- **Documents with nested data**: Document database
|
|
246
|
+
- **Simple key-value pairs**: Key-value store
|
|
247
|
+
- **Time-series, events**: Column-family database
|
|
248
|
+
- **Highly connected data**: Graph database
|
|
249
|
+
|
|
250
|
+
**2. Query Patterns**
|
|
251
|
+
- **Complex JOINs**: Relational database
|
|
252
|
+
- **Simple lookups by ID**: Key-value store
|
|
253
|
+
- **Rich queries on documents**: Document database
|
|
254
|
+
- **Graph traversals**: Graph database
|
|
255
|
+
- **Range queries on time-series**: Column-family database
|
|
256
|
+
|
|
257
|
+
**3. Scalability Requirements**
|
|
258
|
+
- **Vertical scaling (single server)**: Relational database, SQLite
|
|
259
|
+
- **Horizontal scaling (distributed)**: NoSQL databases
|
|
260
|
+
- **Massive write throughput**: Column-family database
|
|
261
|
+
- **Massive read throughput**: Key-value store with caching
|
|
262
|
+
|
|
263
|
+
**4. Consistency Requirements**
|
|
264
|
+
- **Strong consistency (ACID)**: Relational database
|
|
265
|
+
- **Eventual consistency acceptable**: NoSQL databases
|
|
266
|
+
- **Tunable consistency**: Cassandra, DynamoDB, MongoDB
|
|
267
|
+
|
|
268
|
+
**5. Transaction Requirements**
|
|
269
|
+
- **Multi-row transactions**: Relational database
|
|
270
|
+
- **Single-document transactions**: Document database
|
|
271
|
+
- **No transactions needed**: Key-value store, column-family
|
|
272
|
+
|
|
273
|
+
### Database Comparison Matrix
|
|
274
|
+
|
|
275
|
+
| Database | Type | Consistency | Scalability | Query Complexity | Use Case |
|
|
276
|
+
|----------|------|-------------|-------------|------------------|----------|
|
|
277
|
+
| PostgreSQL | Relational | Strong | Vertical | High | Complex queries, ACID |
|
|
278
|
+
| MongoDB | Document | Tunable | Horizontal | Medium | Flexible schema, nested data |
|
|
279
|
+
| Redis | Key-Value | Strong | Horizontal | Low | Caching, sessions |
|
|
280
|
+
| Cassandra | Column-Family | Tunable | Horizontal | Low | Time-series, high writes |
|
|
281
|
+
| Neo4j | Graph | Strong | Vertical | High | Relationships, traversals |
|
|
282
|
+
| DynamoDB | Key-Value | Tunable | Horizontal | Low | Simple lookups, high scale |
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Common Patterns
|
|
287
|
+
|
|
288
|
+
### Denormalization
|
|
289
|
+
|
|
290
|
+
**Principle**: Store redundant data to avoid JOINs and improve read performance
|
|
291
|
+
|
|
292
|
+
**Example: Blog Application**
|
|
293
|
+
```javascript
|
|
294
|
+
// ❌ Normalized (relational approach)
|
|
295
|
+
// users table: { id, name, email }
|
|
296
|
+
// posts table: { id, user_id, title, content }
|
|
297
|
+
// Requires JOIN to get author name
|
|
298
|
+
|
|
299
|
+
// ✅ Denormalized (NoSQL approach)
|
|
300
|
+
{
|
|
301
|
+
"_id": "post123",
|
|
302
|
+
"title": "Introduction to NoSQL",
|
|
303
|
+
"content": "...",
|
|
304
|
+
"author": {
|
|
305
|
+
"id": "user456",
|
|
306
|
+
"name": "John Doe",
|
|
307
|
+
"email": "john@example.com"
|
|
308
|
+
},
|
|
309
|
+
"created_at": "2024-01-15T10:00:00Z"
|
|
310
|
+
}
|
|
311
|
+
// Author data embedded in post document
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**Trade-offs:**
|
|
315
|
+
- ✅ Faster reads (no JOINs)
|
|
316
|
+
- ✅ Single query to get all data
|
|
317
|
+
- ❌ Data duplication
|
|
318
|
+
- ❌ Update complexity (must update all copies)
|
|
319
|
+
|
|
320
|
+
**When to denormalize:**
|
|
321
|
+
- ✅ Read-heavy workloads
|
|
322
|
+
- ✅ Data rarely changes
|
|
323
|
+
- ✅ Query performance is critical
|
|
324
|
+
- ❌ Data changes frequently
|
|
325
|
+
- ❌ Strong consistency is required
|
|
326
|
+
|
|
327
|
+
### Embedding vs Referencing
|
|
328
|
+
|
|
329
|
+
**Embedding**: Store related data within the same document
|
|
330
|
+
|
|
331
|
+
**Referencing**: Store references (IDs) to related data in separate documents
|
|
332
|
+
|
|
333
|
+
**Example:**
|
|
334
|
+
```javascript
|
|
335
|
+
// Embedding (one-to-few relationship)
|
|
336
|
+
{
|
|
337
|
+
"_id": "user123",
|
|
338
|
+
"name": "John Doe",
|
|
339
|
+
"addresses": [
|
|
340
|
+
{ "type": "home", "street": "123 Main St", "city": "Boston" },
|
|
341
|
+
{ "type": "work", "street": "456 Office Blvd", "city": "Boston" }
|
|
342
|
+
]
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Referencing (one-to-many relationship)
|
|
346
|
+
// User document
|
|
347
|
+
{
|
|
348
|
+
"_id": "user123",
|
|
349
|
+
"name": "John Doe"
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Order documents (separate collection)
|
|
353
|
+
{
|
|
354
|
+
"_id": "order456",
|
|
355
|
+
"user_id": "user123",
|
|
356
|
+
"total": 99.99,
|
|
357
|
+
"items": [...]
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**When to embed:**
|
|
362
|
+
- ✅ One-to-few relationships (< 100 items)
|
|
363
|
+
- ✅ Data is always accessed together
|
|
364
|
+
- ✅ Data doesn't change frequently
|
|
365
|
+
- ✅ Document size stays under limit (16MB in MongoDB)
|
|
366
|
+
|
|
367
|
+
**When to reference:**
|
|
368
|
+
- ✅ One-to-many or many-to-many relationships
|
|
369
|
+
- ✅ Data is accessed independently
|
|
370
|
+
- ✅ Data changes frequently
|
|
371
|
+
- ✅ Document size would exceed limits
|
|
372
|
+
|
|
373
|
+
### Caching Pattern
|
|
374
|
+
|
|
375
|
+
**Use NoSQL as cache layer in front of relational database:**
|
|
376
|
+
|
|
377
|
+
```javascript
|
|
378
|
+
// Node.js: Redis cache with PostgreSQL fallback
|
|
379
|
+
async function getUser(userId) {
|
|
380
|
+
// Try cache first
|
|
381
|
+
const cached = await redis.get(`user:${userId}`);
|
|
382
|
+
if (cached) {
|
|
383
|
+
return JSON.parse(cached);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Cache miss - query database
|
|
387
|
+
const user = await db.query('SELECT * FROM users WHERE id = $1', [userId]);
|
|
388
|
+
|
|
389
|
+
// Store in cache with TTL
|
|
390
|
+
await redis.setex(`user:${userId}`, 3600, JSON.stringify(user));
|
|
391
|
+
|
|
392
|
+
return user;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Invalidate cache on update
|
|
396
|
+
async function updateUser(userId, data) {
|
|
397
|
+
await db.query('UPDATE users SET ... WHERE id = $1', [userId]);
|
|
398
|
+
await redis.del(`user:${userId}`); // Invalidate cache
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Event Sourcing
|
|
403
|
+
|
|
404
|
+
**Store events instead of current state:**
|
|
405
|
+
|
|
406
|
+
```javascript
|
|
407
|
+
// Event store (append-only)
|
|
408
|
+
{
|
|
409
|
+
"_id": "event123",
|
|
410
|
+
"aggregate_id": "account456",
|
|
411
|
+
"event_type": "MoneyDeposited",
|
|
412
|
+
"amount": 100,
|
|
413
|
+
"timestamp": "2024-01-15T10:00:00Z"
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
{
|
|
417
|
+
"_id": "event124",
|
|
418
|
+
"aggregate_id": "account456",
|
|
419
|
+
"event_type": "MoneyWithdrawn",
|
|
420
|
+
"amount": 50,
|
|
421
|
+
"timestamp": "2024-01-15T11:00:00Z"
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// Rebuild current state by replaying events
|
|
425
|
+
function getCurrentBalance(accountId) {
|
|
426
|
+
const events = db.events.find({ aggregate_id: accountId }).sort({ timestamp: 1 });
|
|
427
|
+
let balance = 0;
|
|
428
|
+
|
|
429
|
+
for (const event of events) {
|
|
430
|
+
if (event.event_type === 'MoneyDeposited') {
|
|
431
|
+
balance += event.amount;
|
|
432
|
+
} else if (event.event_type === 'MoneyWithdrawn') {
|
|
433
|
+
balance -= event.amount;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return balance;
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## Limitations and Challenges
|
|
444
|
+
|
|
445
|
+
### Lack of JOINs
|
|
446
|
+
|
|
447
|
+
**Problem**: NoSQL databases don't support JOINs like relational databases
|
|
448
|
+
|
|
449
|
+
**Solutions:**
|
|
450
|
+
- **Denormalization**: Embed related data
|
|
451
|
+
- **Application-level joins**: Fetch related data in multiple queries
|
|
452
|
+
- **Aggregation pipelines**: Use database-specific aggregation features (MongoDB)
|
|
453
|
+
|
|
454
|
+
**Example: Application-level join**
|
|
455
|
+
```javascript
|
|
456
|
+
// Fetch user
|
|
457
|
+
const user = await db.users.findOne({ _id: userId });
|
|
458
|
+
|
|
459
|
+
// Fetch user's orders (separate query)
|
|
460
|
+
const orders = await db.orders.find({ user_id: userId });
|
|
461
|
+
|
|
462
|
+
// Combine in application
|
|
463
|
+
const result = {
|
|
464
|
+
...user,
|
|
465
|
+
orders: orders
|
|
466
|
+
};
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### No ACID Transactions (Traditional)
|
|
470
|
+
|
|
471
|
+
**Problem**: Many NoSQL databases don't support multi-document transactions
|
|
472
|
+
|
|
473
|
+
**Solutions:**
|
|
474
|
+
- **Single-document atomicity**: Design schema to keep related data in one document
|
|
475
|
+
- **Eventual consistency**: Accept temporary inconsistencies
|
|
476
|
+
- **Saga pattern**: Use compensating transactions
|
|
477
|
+
- **Modern NoSQL**: Use databases with transaction support (MongoDB 4.0+, DynamoDB transactions)
|
|
478
|
+
|
|
479
|
+
### Schema Flexibility Can Be a Curse
|
|
480
|
+
|
|
481
|
+
**Problem**: No enforced schema can lead to data inconsistencies
|
|
482
|
+
|
|
483
|
+
**Solutions:**
|
|
484
|
+
- **Application-level validation**: Validate data before inserting
|
|
485
|
+
- **Schema versioning**: Include version field in documents
|
|
486
|
+
- **Migration scripts**: Update old documents to new schema
|
|
487
|
+
- **Database-level validation**: Use schema validation features (MongoDB schema validation)
|
|
488
|
+
|
|
489
|
+
**Example: MongoDB schema validation**
|
|
490
|
+
```javascript
|
|
491
|
+
db.createCollection("users", {
|
|
492
|
+
validator: {
|
|
493
|
+
$jsonSchema: {
|
|
494
|
+
bsonType: "object",
|
|
495
|
+
required: ["email", "name"],
|
|
496
|
+
properties: {
|
|
497
|
+
email: {
|
|
498
|
+
bsonType: "string",
|
|
499
|
+
pattern: "^.+@.+$"
|
|
500
|
+
},
|
|
501
|
+
name: {
|
|
502
|
+
bsonType: "string"
|
|
503
|
+
},
|
|
504
|
+
age: {
|
|
505
|
+
bsonType: "int",
|
|
506
|
+
minimum: 0,
|
|
507
|
+
maximum: 150
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
### Query Limitations
|
|
516
|
+
|
|
517
|
+
**Problem**: Limited query capabilities compared to SQL
|
|
518
|
+
|
|
519
|
+
**Solutions:**
|
|
520
|
+
- **Indexing**: Create indexes for common query patterns
|
|
521
|
+
- **Aggregation pipelines**: Use database-specific aggregation features
|
|
522
|
+
- **Materialized views**: Pre-compute and store query results
|
|
523
|
+
- **Hybrid approach**: Use relational database for complex queries
|
|
524
|
+
|
|
525
|
+
### Consistency Challenges
|
|
526
|
+
|
|
527
|
+
**Problem**: Eventual consistency can lead to stale reads
|
|
528
|
+
|
|
529
|
+
**Solutions:**
|
|
530
|
+
- **Read-your-writes consistency**: Configure database to return user's own writes
|
|
531
|
+
- **Strong consistency reads**: Use consistency level options (DynamoDB, Cassandra)
|
|
532
|
+
- **Conflict resolution**: Implement application-level conflict resolution
|
|
533
|
+
- **Version vectors**: Track causality to resolve conflicts
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## Best Practices
|
|
538
|
+
|
|
539
|
+
### DO
|
|
540
|
+
|
|
541
|
+
✅ **Understand your access patterns** before choosing a database
|
|
542
|
+
✅ **Design schema for your queries** (query-driven design)
|
|
543
|
+
✅ **Use indexes** for frequently queried fields
|
|
544
|
+
✅ **Monitor performance** and adjust as needed
|
|
545
|
+
✅ **Plan for data growth** and scalability
|
|
546
|
+
✅ **Implement proper error handling** for eventual consistency
|
|
547
|
+
✅ **Use connection pooling** for better performance
|
|
548
|
+
✅ **Validate data** at application level
|
|
549
|
+
✅ **Version your schema** for easier migrations
|
|
550
|
+
✅ **Test with production-like data volumes**
|
|
551
|
+
|
|
552
|
+
### DON'T
|
|
553
|
+
|
|
554
|
+
❌ **Don't use NoSQL for everything** - choose the right tool
|
|
555
|
+
❌ **Don't ignore consistency requirements** - understand trade-offs
|
|
556
|
+
❌ **Don't over-denormalize** - balance read/write performance
|
|
557
|
+
❌ **Don't skip indexing** - queries will be slow
|
|
558
|
+
❌ **Don't ignore data modeling** - schema design still matters
|
|
559
|
+
❌ **Don't assume infinite scalability** - test at scale
|
|
560
|
+
❌ **Don't forget backups** - data loss is catastrophic
|
|
561
|
+
❌ **Don't ignore security** - encrypt data, use authentication
|
|
562
|
+
❌ **Don't mix paradigms** - understand the database model
|
|
563
|
+
❌ **Don't skip monitoring** - observe performance and errors
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## Summary
|
|
568
|
+
|
|
569
|
+
**NoSQL databases offer:**
|
|
570
|
+
- Flexible schema
|
|
571
|
+
- Horizontal scalability
|
|
572
|
+
- High performance for specific use cases
|
|
573
|
+
- Eventual consistency (trade-off for availability)
|
|
574
|
+
|
|
575
|
+
**Choose NoSQL when:**
|
|
576
|
+
- Schema flexibility is needed
|
|
577
|
+
- Horizontal scaling is critical
|
|
578
|
+
- Eventual consistency is acceptable
|
|
579
|
+
- Simple query patterns dominate
|
|
580
|
+
|
|
581
|
+
**Choose Relational when:**
|
|
582
|
+
- ACID compliance is required
|
|
583
|
+
- Complex queries with JOINs are needed
|
|
584
|
+
- Strong consistency is critical
|
|
585
|
+
- Schema is stable and well-defined
|
|
586
|
+
|
|
587
|
+
**Key Takeaway**: NoSQL is not a replacement for relational databases - it's a complementary tool for specific use cases. Choose the right database for your requirements.
|
|
588
|
+
|