Database Management Systems Mastery
From Fundamentals to Advanced Design and Optimization
Master the complete landscape of database management systems and transform how you design, build, and optimize data-driven applications.
222 pages10 chaptersAug 18, 2026Databases
About this book
This comprehensive guide takes you beyond basic SQL to explore the architectural principles, design patterns, and optimization techniques that separate competent developers from database experts. You'll discover how to architect databases that scale, implement transaction management that ensures data integrity, design schemas that prevent anomalies, and optimize queries that perform at production speeds. Whether you're building microservices, managing enterprise systems, or scaling applications to millions of users, this book provides the practical knowledge and strategic insights you need to make informed decisions about database technology, design patterns, and performance tuning. Learn from real-world scenarios, understand the trade-offs between different approaches, and develop the expertise to tackle complex data challenges with confidence.
Table of contents
- IntroductionWhy Database Management Systems Matter, What You'll Learn in This Book, How to Use This Guide, Prerequisites and AssumptionsRead below
- Chapter 1: Fundamentals of Database Management SystemsWhat Is a Database Management System?, Core Components and Architecture, Types of Databases and Their Characteristics, Evolution of Database Technology
- Chapter 2: Data Models and Schema DesignThe Relational Model Explained, Entity-Relationship Modeling, Schema Design Principles and Best Practices, Alternative Data Models: Document, Graph, and Key-Value
- Chapter 3: Normalization and Data IntegrityUnderstanding Normalization, Normal Forms: 1NF Through BCNF, Denormalization and Performance Trade-offs, Constraints and Data Integrity Rules
- Chapter 4: Transactions and ACID PropertiesTransaction Fundamentals and Lifecycle, ACID Properties: Atomicity, Consistency, Isolation, Durability, Concurrency Control and Locking Mechanisms, Isolation Levels and Their Implications
- Chapter 5: Indexing and Query OptimizationIndex Fundamentals and Data Structures, Types of Indexes: B-Tree, Hash, Bitmap, and Full-Text, Query Optimization and Execution Plans, Developing an Effective Indexing Strategy
- Chapter 6: Storage and File ManagementStorage Hierarchy and Memory Management, File Organization and Record Storage, Buffer Management and Caching Strategies, Disk I/O Optimization Techniques
- Chapter 7: Backup, Recovery, and Disaster ManagementBackup Strategies and Implementation, Recovery Mechanisms and Point-in-Time Restoration, Disaster Recovery Planning and Business Continuity, High Availability and Replication
- Chapter 8: Security and Access ControlAuthentication and Authorization Mechanisms, Encryption and Data Protection, Auditing, Logging, and Compliance, Security Best Practices and Threat Mitigation
- Chapter 9: Distributed Databases and ScalabilityDistributed Database Concepts and Challenges, Replication and Partitioning Strategies, Consistency Models: CAP Theorem and Beyond, Scaling Patterns and Sharding Approaches
- Chapter 10: Modern Database Technologies and TrendsNoSQL Databases: When and Why to Use Them, Cloud-Native and Managed Database Services, Emerging Technologies: Time-Series, Graph, and Vector Databases, Polyglot Persistence and Technology Selection
- ConclusionKey Takeaways and Core Principles, Continuing Your Database Expertise Journey, Final Thoughts
- Glossary
- Further Reading and Resources
Introduction
A mid-sized retail company once lost six hours of sales data during a routine software update. The cause was not a hardware failure or a hacker. It was a database that had never been designed with recovery in mind, running on a schema that had grown by accident rather than by plan, indexed only where someone remembered to add one. The company survived, but the incident forced a hard conversation about what a database actually is and what it takes to keep one healthy. That conversation is the starting point for this book.
Database management systems sit underneath almost every piece of software built today, yet many developers interact with them only through an ORM or a handful of memorized SQL statements. That works fine until the system slows down under load, until two transactions collide and corrupt a balance, or until a schema designed in a rush becomes impossible to change without breaking half the application. At that point, surface-level familiarity stops being enough. Real fluency with data storage, integrity, and performance becomes the difference between a system that scales gracefully and one that requires constant firefighting.
This book is built for exactly that transition, from knowing how to write a query to understanding why the query behaves the way it does. It treats the database not as a black box that stores and returns rows, but as an engineered system with deliberate trade-offs at every layer, from how bytes are arranged on disk to how a distributed cluster decides what counts as the truth when two nodes disagree. Each chapter isolates one of those layers and explains both the theory behind it and the practical decisions it demands.
The chapters that follow move in a deliberate sequence: architecture and history first, then data modeling, then normalization, then transactions, then indexing and optimization, then storage, then backup and recovery, then security, then distributed systems, and finally the modern landscape of NoSQL, cloud, and specialized engines. Each builds on the one before it, so a strong grasp of the relational model in an early chapter pays off directly when normalization and query optimization are introduced later. The remainder of this introduction explains why this subject deserves careful study, what specifically is ahead, how to get the most out of the material, and what background is assumed before starting.
Why Database Management Systems Matter
Every application that remembers anything between requests depends on a database. A social media feed, a hospital's patient records, a bank's ledger, and a warehouse's inventory count all rely on the same underlying category of software to store facts reliably and retrieve them quickly. The visible part of an application, its interface and business logic, tends to get the attention in engineering discussions. The database, quietly holding the state that makes the application meaningful, often gets treated as an afterthought until something goes wrong. That asymmetry is a mistake, because the database is usually the hardest part of the system to change once it is in production.
Consider what happens when a database is designed poorly from the start. A common scenario is a startup that begins with a single, sprawling table to store customer orders, mixing customer details, product details, and payment details together for convenience. As the business grows, the same customer's address might be updated in one row but not another, creating silent inconsistencies. Reports start disagreeing with each other. Eventually, someone has to migrate years of tangled data into a properly normalized structure while the application is still running, a project that can take months and carries real risk of downtime or data loss.
The financial stakes of database decisions are rarely trivial. A poorly tuned query that scans an entire multi-million-row table on every page load can turn a fast application into a sluggish one as traffic grows, driving away users and increasing infrastructure costs simultaneously. A missing backup strategy can turn a single accidental deletion into a catastrophic, unrecoverable loss. A database left without proper access controls can expose sensitive customer data to anyone who finds the right endpoint. These are not hypothetical risks confined to inexperienced teams. They have caused real outages, real financial losses, and real reputational damage at companies of every size.
Database management systems also matter because they encode decades of solved problems that would otherwise have to be reinvented badly. The idea of separating how data is logically structured from how it is physically stored, known as Data Independence, means an application does not need to know or care whether rows are stored as fixed-length records or compressed columns on disk. The idea of a Transaction guaranteeing that a sequence of operations either fully completes or fully fails means a funds transfer never leaves one account debited without the other credited. These are not incidental features. They are the reason developers can build complex systems without personally solving problems that took the field decades to work out.
The scale of modern data makes this understanding even more urgent than it was a generation ago. A single mobile application can generate millions of events per day, a machine learning pipeline can require terabytes of structured training data, and a global e-commerce platform can need to serve consistent inventory counts across continents in milliseconds. None of that is achievable with guesswork or trial and error. It requires a working knowledge of how a Database Management System organizes data, enforces rules, and coordinates concurrent access, along with an understanding of when to distribute that work across many machines rather than one.
There is also a career dimension worth naming directly. Developers who understand database internals, not just the SQL syntax on top of them, tend to be the ones trusted with the hardest production incidents and the most consequential architecture decisions. Interviewers at companies building serious infrastructure routinely probe for this depth, asking candidates to explain why a particular index would or would not help a slow query, or how they would design a schema to avoid a specific class of anomaly. That depth is rarely taught in a single course or bootcamp. It tends to be earned slowly, through a mix of study and painful production experience, unless it is deliberately built through focused study like the chapters ahead.
The relational model, first proposed by Edgar F. Codd, gave the field a mathematical foundation for organizing data that has proven remarkably durable across five decades of changing hardware and application patterns[1]. That durability is itself instructive. Technologies rise and fall in software, but the underlying principles of organizing data to minimize redundancy, enforce correctness, and support fast retrieval have proven far more stable than any particular product built on top of them. Learning those principles, rather than memorizing the quirks of one vendor's SQL dialect, is what allows the knowledge in this book to remain useful across a career that will likely span several generations of database technology.
It also matters that databases sit at the intersection of correctness and performance, two goals that frequently pull in opposite directions. A database that never made a mistake but took ten seconds to answer a query would be useless for most applications, while a database that answered instantly but occasionally lost or corrupted data would be dangerous for most of the same applications. Every design decision covered in this book, from the level of normalization applied to a schema, to the choice of isolation level for a transaction, to the decision to add or remove an index, involves navigating that tension deliberately rather than by accident.
Finally, database literacy has become a shared language across roles that used to operate in isolation. Backend developers, data engineers, site reliability engineers, and even product managers making decisions about feature scope now regularly need to reason about query performance, data consistency, and storage costs together. A developer who can explain to a product manager why a proposed feature would require an expensive join across three large tables, and can propose an alternative schema that avoids it, brings real value to a team beyond writing code. That kind of cross-functional fluency is one of the practical outcomes this book aims to build.
None of this is meant to suggest that database work is only about avoiding disaster. Done well, database design and optimization is one of the more satisfying disciplines in software engineering, because the results are measurable and often dramatic. Turning a query that takes twelve seconds into one that takes twelve milliseconds through a well-placed index, or redesigning a schema so that a previously error-prone process becomes structurally impossible to get wrong, produces a kind of clear, verifiable improvement that is harder to find in many other parts of software work. That satisfaction, as much as the risk avoidance, is a reason to take this subject seriously.
What You'll Learn in This Book
The chapters ahead are organized to build a complete mental model of a database system, layer by layer, rather than presenting isolated tips. The first substantive chapter establishes what a Database Management System actually is, walking through its core components and Database Architecture, along with a brief history of how the field arrived at its current form. That foundation matters because every later concept, from indexing to distributed consistency, is easier to reason about once the underlying architecture is clear.
From there, the focus shifts to data modeling. The Relational Model and Entity-Relationship Model are explained in enough depth to design real schemas confidently, including how to represent Cardinality between entities correctly. This section also introduces alternative data models, including document, graph, and key-value approaches, so that relational thinking is understood as one strong option among several rather than the only possible answer. A developer who has only ever used a relational database sometimes forces awkward relationships into tables that would be modeled far more naturally as a graph or a document.
Normalization receives dedicated attention because it is one of the most misunderstood disciplines in practical database work. The book walks through Functional Dependency as the theoretical basis for normalization, then works through the normal forms up to Boyce-Codd Normal Form with concrete examples showing exactly which anomaly each form eliminates. It also covers Denormalization honestly, as a deliberate performance trade-off rather than a mistake, along with the constraints and Referential Integrity rules that keep a database trustworthy even as it grows more complex.
Transactions and concurrency form another major pillar. The book explains the ACID Properties not as an abstract acronym but as four separate guarantees, each solving a distinct real-world problem, from a crashed server mid-write to two customers booking the last seat on a flight simultaneously. It covers Two-Phase Locking and Deadlock as concrete mechanisms behind concurrency control, then explains how different Isolation Level choices trade consistency guarantees for throughput, a decision every backend developer eventually has to make deliberately rather than by default.
Performance work gets substantial space, because this is where database knowledge tends to pay off most visibly in daily engineering work. The book explains how a B-Tree Index is structured and why it makes lookups fast, how a Query Optimizer chooses between possible Execution Plan options, and how a Covering Index can eliminate expensive table lookups entirely. It also covers the Storage Hierarchy and how a Buffer Pool and Page Replacement Policy work together to minimize expensive disk I/O, connecting physical storage decisions directly to the query performance developers experience.
Reliability and protection occupy their own extended treatment. Backup strategy is explained through the lens of Recovery Point Objective and Recovery Time Objective, two concrete metrics that turn an abstract goal like "don't lose data" into measurable engineering requirements. The book covers Point-in-Time Recovery and the role of the Write-Ahead Log in making it possible, along with High Availability patterns that keep systems running through hardware failure. Security follows immediately after, covering Role-Based Access Control, Encryption at Rest, the Principle of Least Privilege, and defenses against threats like SQL Injection.
The later chapters turn outward, toward systems that span many machines rather than one. This includes Replication and Sharding as complementary strategies for distributing data, the CAP Theorem as a framework for reasoning about the trade-offs those strategies force, and Eventual Consistency as a model that many large-scale systems accept deliberately in exchange for availability. These ideas are presented with real scenarios, such as a global application choosing between strict consistency and low latency for users on different continents, so the trade-offs feel concrete rather than theoretical.
The final technical chapter surveys the modern landscape, covering when a NoSQL Database genuinely outperforms a relational approach and when it merely adds complexity without benefit. It introduces Managed Database Service offerings that have changed how teams operate databases in production, along with newer categories like the Vector Database for similarity search and the Time-Series Database for high-volume sequential data. The chapter closes with Polyglot Persistence, the practice of deliberately combining multiple database technologies within one system rather than forcing every workload into a single engine.
Beyond the individual concepts, a consistent thread runs through every chapter: trade-offs are made explicit rather than hidden. Almost nothing in database design is free. Adding an index speeds up reads but slows down writes and consumes storage. Normalizing a schema prevents anomalies but can require more joins at query time. Choosing a stricter isolation level protects against subtle bugs but reduces how many transactions a system can process concurrently. Learning to name these trade-offs precisely, rather than following rules blindly, is the actual skill this book is trying to build.
By the end of the book, the goal is not simply familiarity with a list of terms, but the ability to look at an unfamiliar system, whether it is a legacy schema inherited from a previous team or a brand-new service being designed from scratch, and reason confidently about how it should be structured, indexed, secured, and scaled. That capability is what separates a developer who uses a database from one who understands it.
How to Use This Guide
The chapters are ordered deliberately and build on each other, so working through them in sequence on a first pass is the most reliable approach. Concepts introduced early, such as the relational model and normalization, are treated as known vocabulary in later chapters on transactions, indexing, and distributed systems. Skipping ahead to a chapter on query optimization without a solid grasp of how indexes are structured, for instance, will make some explanations feel like they are missing a step. That said, once the book has been read once in order, individual chapters work well as standalone references for a specific problem, such as returning to the chapter on backup strategy before designing a disaster recovery plan.
Each chapter is structured to move from foundational explanation toward practical application, so pay attention to where a concept shifts from "what this is" to "how to use it." The normalization chapter, for example, explains the theory behind functional dependencies before showing a step-by-step process for taking an unnormalized table through successive normal forms. Reading past the theoretical portion too quickly can leave the practical portion feeling abstract, so resist the urge to skim the conceptual groundwork even if it feels familiar from prior experience.
A genuinely effective way to use this book is to keep a real or realistic schema on hand while reading, ideally from a project already worked on, and apply each new concept to it as it is introduced. When the chapter on functional dependency is covered, try to identify actual functional dependencies within that schema rather than only the textbook example. When the chapter on indexing explains covering indexes, look at that schema's slowest query and ask whether a covering index would help. This kind of active application turns abstract concepts into muscle memory far faster than passive reading alone.
Several chapters include specific technical terms formatted in bold the first time they are defined in depth, marking them as canonical vocabulary used consistently throughout the book. Building a personal glossary of these terms while reading, even briefly restating each one in a sentence or two, reinforces retention and makes the book's own glossary section more useful as a quick-reference tool later. This is especially valuable for terms that sound similar but mean different things, such as Recovery Point Objective versus Recovery Time Objective, where the distinction matters enormously in a real incident.
Where a chapter presents a worked example, such as walking a table through the normal forms or tracing how a query optimizer selects an execution plan, take the time to work through the example independently before reading the explanation of the outcome. Predicting the result and then checking it against the book's walkthrough is a far more effective way to internalize the underlying logic than simply reading the conclusion. This is particularly true for the transaction and concurrency chapters, where intuitions about what "should" happen under concurrent access are often wrong until tested against the actual rules.
For readers currently responsible for a production database, it is worth pausing after each chapter to ask a direct question: does the current system follow this practice, and if not, is that a deliberate trade-off or an oversight? A chapter on backup strategy might prompt a check of whether the current recovery point objective is actually documented anywhere, rather than assumed. A chapter on indexing might prompt pulling up the current execution plan for a known slow query in the actual production system. This habit turns the book into an active audit tool rather than a passive read.
The book intentionally avoids tying its explanations to the syntax of one specific database product, focusing instead on the concepts that apply across relational systems and, where relevant, NoSQL systems as well. When trying out an example on a real system, be prepared to translate general concepts into the specific syntax of whatever database is being used, whether that is PostgreSQL, MySQL, SQL Server, or another engine. This translation step is itself useful practice, because it forces engagement with the underlying concept rather than just copying a command.
Some chapters, particularly those covering distributed systems and modern database technologies, describe trade-offs that only become fully clear through direct experience with the failure modes involved. Reading about eventual consistency is useful, but nothing clarifies the concept like watching a real distributed system return stale data to one user while another sees the updated value. Where possible, pair the reading with small, low-stakes experiments, such as spinning up a local multi-node database cluster and deliberately observing how it behaves under simulated network delay.
The glossary near the end of the book is designed as a working reference, not just a review section, and returning to it regularly while reading earlier chapters is encouraged rather than saving it for last. Because many terms in this field are used loosely or inconsistently across different resources, having one consistent definition to anchor against reduces confusion significantly, especially for terms like Isolation Level or Consistency that carry subtly different meanings depending on context.
Finally, treat the footnoted sources throughout the book as an invitation rather than an obligation. They point to the foundational papers and standard references behind major ideas, such as the original relational model paper or classic transaction processing literature, for anyone who wants to go deeper into the theoretical roots of a topic. Reading the book without ever opening one of these sources will still deliver a solid working knowledge of the subject, but for readers aiming toward genuine expertise rather than working familiarity, those original sources are where the deepest understanding ultimately lives.
Prerequisites and Assumptions
This book assumes a working, practical familiarity with at least one relational database, meaning comfort writing basic SELECT, INSERT, UPDATE, and DELETE statements, along with a basic understanding of joins between tables. It does not assume mastery of advanced SQL features like window functions or recursive queries, since those are addressed where relevant within the chapters themselves. Someone who has used a database primarily through an ORM in a web framework, without writing much raw SQL, should still be able to follow the material, though spending a little time practicing raw queries beforehand will make the examples land more naturally.
A general background in software development is assumed throughout, including familiarity with concepts like variables, functions, and basic data structures such as arrays and key-value pairs. The book does not require experience with any particular programming language, and code examples are kept minimal and used mainly to illustrate a concept rather than to teach programming itself. Someone coming from a background in data analysis or data engineering, rather than traditional application development, should find the material equally accessible, since the core concepts apply regardless of which side of the data pipeline someone works on.
Some exposure to basic mathematical or logical reasoning is helpful, particularly for the chapters on normalization and functional dependencies, which involve reasoning about sets and dependencies in a fairly formal way. Nothing beyond basic set notation and simple logical statements is required, and every formal concept is paired with a plain-language explanation and a concrete example. Someone who finds the notation unfamiliar at first should focus on the accompanying examples, since the underlying logic is usually much simpler than the notation initially suggests.
No prior experience with distributed systems, cloud infrastructure, or NoSQL databases is assumed, since those topics are introduced from first principles in their respective chapters. Someone who has only ever worked with a single relational database running on one server will not be at a disadvantage when reaching the chapters on replication, sharding, and consistency models, since those chapters build up the necessary vocabulary and mental models from the ground up rather than assuming prior exposure. That said, anyone who has already encountered terms like Sharding or Replication in passing will find the deeper treatment here fills in gaps left by fragmented on-the-job exposure.
Familiarity with basic command-line usage is useful but not strictly required, since most examples focus on SQL statements and conceptual diagrams rather than terminal commands. Where a specific tool or command is mentioned, such as a backup utility or a command to inspect an execution plan, enough context is given to understand its purpose without needing to already know that specific tool. Someone entirely new to command-line database administration might want to spend a little extra time experimenting directly with a local database installation while reading the storage and recovery chapters, since hands-on practice reinforces those particular topics especially well.
This book does not assume access to any specific paid software or cloud account, since all core concepts can be practiced using free, open-source relational databases like PostgreSQL or MySQL installed locally. Chapters that discuss managed cloud database services describe their general characteristics and trade-offs rather than requiring a specific vendor account to follow along. Anyone wanting to practice the cloud-specific material hands-on can typically do so using a free tier offered by major cloud providers, though this is optional rather than required for understanding the concepts.
Readers are assumed to have some motivation rooted in real work, whether that is an existing production system that needs improvement, an upcoming project that requires solid design decisions from the start, or simply a desire to close gaps left by self-taught or bootcamp-style learning. The book is written with that practical motivation in mind throughout, favoring concrete examples and actionable frameworks over purely academic treatment of the subject. Someone reading purely out of academic curiosity, without any particular system in mind, will still benefit, but will get more out of the material by imagining a hypothetical system to apply each concept to as they read.
It is assumed that some concepts will already be partially familiar from prior experience, particularly basics like primary keys, foreign keys, and the general idea of a transaction. Rather than treating this as redundant, use those familiar concepts as anchors for the deeper explanations that follow, since the book frequently takes a concept that seems simple on the surface and reveals additional depth and nuance underneath. Someone who already knows what a foreign key is will still find new value in the chapter on referential integrity, since it goes further into how that constraint is enforced and what happens when it is violated under concurrent modification.
One assumption that is explicitly not made is that the reader already works at a large company with dedicated database administrators or platform teams. Much of the material is written with the assumption that the reader may be personally responsible for decisions that would otherwise be split across several specialized roles, such as designing the schema, writing the queries, and also handling backups and security. This is a common reality for developers at small and mid-sized companies, and the book's practical framing reflects that reality rather than assuming a large organizational safety net.
Finally, patience with iterative learning is assumed, since some of the deepest concepts in this field, particularly around concurrency control and distributed consistency, tend to make more sense the second time they are encountered than the first. A concept like Two-Phase Locking or Eventual Consistency might feel abstract on an initial read but click clearly once revisited after some hands-on practice with a real system. Approaching the material with the expectation that some rereading and hands-on experimentation will be necessary, rather than expecting full mastery on a single pass, sets realistic expectations for a subject that rewards sustained engagement over quick memorization.
Notes
Introduction
- 1. Edgar F. Codd, "A Relational Model of Data for Large Shared Data Banks," Communications of the ACM, 1970
This is the end of the free sample. The full book has 10 chapters.
Want this book written for you?
Tell us your goals and background, and get your own version of this book, tailored by AI to you.
Benefits of AI-tailored books
- Read one book, not ten:
- all the Databases knowledge you need, gathered into a single book.
- Save days of learning:
- tell us your goals, choose your topics, and the whole book is built around them.
- Learn effortlessly:
- Databases book written for your specific background and expertise.
- Understand at a glance:
- includes charts, tables, timelines, checklists, decision trees, and more.
- Stay current:
- written the day you order it, not years ago.
- Trust what you read:
- every book is checked for accuracy, with real research when your subject needs it.
Create your unique book in 3 steps
- 1. Select your focus
Select the focus of your Databases book and share your background
- 2. Personalize your book
Specify your goals and choose sub-topics to include
- 3. Get your tailored book
Your book is ready in 10 minutes. Read it online, download as EPUB or PDF, or send to Kindle.
Frequently asked questions
- What is TailoredRead?
TailoredRead creates complete, full-length nonfiction ebooks, written specifically for you. Tell us what you want to learn and why, and TailoredRead writes you a complete ebook on it, with charts, tables, and diagrams throughout. Read it online, on Kindle, or on any e-reader, or download it as a PDF or EPUB. Every book is written fresh the day you order it.
- How is the book tailored to me?
Before anything is written, you answer a few short questions about your goals, your background, and the topics you care about. Your book is then planned around your answers: written at your level, focused on your goals, and covering the topics you chose, instead of the one-size-fits-all book a store sells everyone.
- Will it read like generic AI content?
No. Your book isn't a chat transcript: it's planned chapter by chapter before a single word is written, told in a clear book voice, and explains ideas visually with charts, tables, and diagrams. After writing, every book goes through an editorial pass that polishes chapters so the book reads consistent from start to finish. Judge for yourself: browse thousands of sample books on our Explore Books page.
- How accurate is the content?
Our AI first checks whether your subject needs live research. Niche and fast-moving subjects are researched before writing, and the book plan and chapters are grounded in what it finds. After writing, every book goes through a quality pass that checks its facts and consistency, and researched books list their sources in a Notes section at the back.
- How long is the book?
You choose the length: Comprehensive (250-300 pages), Detailed (150-200 pages), Essential (70-100 pages), or Short (30-50 pages).
- Does the book include visuals?
Yes. Every book includes charts, tables, and diagrams: timelines, checklists, step-by-step guides, decision trees, comparison tables, matrices, and bar charts. A typical book includes dozens of these visual elements.
- Can I read it on Kindle? What formats can I download?
Yes. Every book can be read in our online reader or downloaded as a PDF or EPUB. The EPUB can be opened with Kindle, Apple Books, Kobo, and any e-reader. The Commercial and Author licenses also include an editable Word (DOCX) and Markdown download.
- How much does it cost?
About the price of a regular ebook. The exact price depends on your book's length and complexity, from $2 for the shortest books to $35 for the most comprehensive, and it's shown when you review your book, before you commit to anything. Each book is a one-time purchase, yours to keep, no subscription. Licenses that let you share, teach, or publish your book range from $35.99 to $49.99.
- Can I preview the book before purchasing?
Before you pay, you'll see what your book will cover: the title, a detailed description, the estimated length, and the complete chapter-by-chapter table of contents, so you know what you're getting before you decide. The full text itself is written after you purchase.
- How long does it take to create a book?
About 10 minutes. You can start reading the opening chapters while the rest is still being written.


