From dca1eb0129724bf39bd6328dc588675b83dfac88 Mon Sep 17 00:00:00 2001 From: luojun Date: Fri, 3 Jan 2025 13:54:52 +0800 Subject: [PATCH] generate article --- pages/blog/_meta.json | 1 + ...ql_for_chat2db_-_a_comprehensive_guide.mdx | 26 ++++++++++++++++++ public/blog/image/1735883692240.jpg | Bin 0 -> 51361 bytes 3 files changed, 27 insertions(+) create mode 100644 pages/blog/tech_angle_leveraging_pgsql_for_chat2db_-_a_comprehensive_guide.mdx create mode 100644 public/blog/image/1735883692240.jpg diff --git a/pages/blog/_meta.json b/pages/blog/_meta.json index 80f05a6..065b69e 100644 --- a/pages/blog/_meta.json +++ b/pages/blog/_meta.json @@ -1,4 +1,5 @@ { +"tech_angle_leveraging_pgsql_for_chat2db_-_a_comprehensive_guide" : "Tech Angle: Leveraging Pgsql for Chat2DB - A Comprehensive Guide", "tech_angle:_leveraging_pgsql_for_chat2db:_a_comprehensive_guide" : "Tech Angle: Leveraging pgsql for chat2db: A Comprehensive Guide", "chat2db-as-a-datagrip-alternative" : "Exploring Chat2DB: A Comprehensive Review as a DataGrip Alternative", "top-ai-tool-alternatives-to-datagrip" : "Top Alternatives to DataGrip: A Review of AI Database Management Tools", diff --git a/pages/blog/tech_angle_leveraging_pgsql_for_chat2db_-_a_comprehensive_guide.mdx b/pages/blog/tech_angle_leveraging_pgsql_for_chat2db_-_a_comprehensive_guide.mdx new file mode 100644 index 0000000..eb2e13b --- /dev/null +++ b/pages/blog/tech_angle_leveraging_pgsql_for_chat2db_-_a_comprehensive_guide.mdx @@ -0,0 +1,26 @@ +--- +title: "Tech Angle: Leveraging Pgsql for Chat2DB - A Comprehensive Guide" +description: "" +image: "/blog/image/1735883692240.jpg" +category: "技术" +date: January 03, 2025 +--- +[![Click to use](/image/blog/bg/chat2db1.png)](https://app.chat2db.ai/) +# Tech Angle: Leveraging Pgsql for Chat2DB - A Comprehensive Guide + +import Authors, { Author } from "components/authors"; + + + +{"output": "\n# Tech Angle: Leveraging PGSQL for Chat2DB - A Comprehensive Guide to Optimizing PostgreSQL for Enhanced Database Performance\n\n## Understanding Chat2DB Performance Challenges with PostgreSQL\n\nWhen developing applications like Chat2DB, performance challenges can significantly impact user experience and scalability. Applications often face issues such as the need for optimized database queries, handling a high volume of concurrent connections, and ensuring low-latency responses. These challenges can lead to slower response times, increased load times, and ultimately, user dissatisfaction.\n\nTo address these issues effectively, choosing the right database management system is essential. PostgreSQL, commonly referred to as **PGSQL**, provides robust features that cater to the needs of demanding applications like Chat2DB. For those unfamiliar with PGSQL, it is well-documented on [Wikipedia](https://en.wikipedia.org/wiki/PostgreSQL), where you can find more information about its capabilities.\n\n### Performance Challenges Overview\n\n| Challenge | Description |\n|----------------------------------|--------------------------------------------------------------|\n| Optimized Database Queries | Without optimization, queries can slow down applications. |\n| High Concurrent Connections | Managing multiple users can strain database resources. |\n| Low-Latency Responses | Users expect immediate feedback from applications. |\n\n## The Role of PGSQL in Enhancing Chat2DB Performance\n\nPostgreSQL is designed to enhance the performance of applications like Chat2DB through several critical features. It supports advanced indexing capabilities, complex queries, and efficient memory management, all of which are crucial for managing large datasets effectively.\n\n### Advanced Indexing Capabilities\n\nPGSQL offers various indexing options, such as B-tree, Hash, and GIN, enabling rapid data retrieval. For example, the following SQL command demonstrates how to create a B-tree index:\n\n```sql\nCREATE INDEX idx_user_email ON users (email);\n```\n\nThis index will significantly speed up searches based on the email field in the `users` table.\n\n### Horizontal Scalability and JSONB Support\n\nOne of the standout features of PGSQL is its support for horizontal scalability and the JSONB data type, which allows for efficient storage and querying of JSON data. An example of inserting JSON data into a table is as follows:\n\n```sql\nCREATE TABLE chat_messages (\n id SERIAL PRIMARY KEY,\n message JSONB\n);\n\nINSERT INTO chat_messages (message) VALUES ('{\"user\": \"Alice\", \"content\": \"Hello!\"}');\n```\n\nThis capability is particularly useful for applications like Chat2DB, where messages can have varying structures.\n\n### Built-in Performance Analysis Tools\n\nPGSQL also includes built-in performance analysis tools, which allow developers to monitor and optimize database operations. Utilizing the `EXPLAIN` command can provide insights into how queries are executed:\n\n```sql\nEXPLAIN SELECT * FROM users WHERE email = 'alice@example.com';\n```\n\nUnderstanding the query plan can help identify bottlenecks and optimize performance.\n\n## Optimizing Database Schema for Chat2DB\n\nDesigning an optimal database schema is vital for applications like Chat2DB. Strategies such as normalization versus denormalization, effective indexing, and partitioning tables can significantly impact performance.\n\n### Normalization vs. Denormalization\n\nNormalization involves organizing data to reduce redundancy, while denormalization can improve read performance at the expense of increased storage. For example, if you have a `users` table and a `messages` table, you might choose to denormalize data for faster read queries:\n\n```sql\nCREATE TABLE messages (\n id SERIAL PRIMARY KEY,\n user_id INT,\n message TEXT,\n FOREIGN KEY (user_id) REFERENCES users(id)\n);\n```\n\n### Effective Indexing\n\nCreating effective indexes is essential for speeding up query performance. Here's an example of creating a composite index on multiple columns:\n\n```sql\nCREATE INDEX idx_user_message ON messages (user_id, created_at);\n```\n\nThis index will optimize queries that filter messages by user and creation date.\n\n### Partitioning Tables\n\nPartitioning tables can help manage large datasets effectively. In PGSQL, you can create partitioned tables like this:\n\n```sql\nCREATE TABLE chat_messages_partitioned (\n id SERIAL,\n user_id INT,\n message TEXT,\n created_at TIMESTAMP\n) PARTITION BY RANGE (created_at);\n\nCREATE TABLE chat_messages_2023 PARTITION OF chat_messages_partitioned \n FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');\n```\n\nThis strategy allows for easier management of historical data.\n\n### Foreign Data Wrappers\n\nPGSQL's foreign data wrappers enable integration with other data sources. This feature allows Chat2DB to query data from external databases seamlessly.\n\n```sql\nCREATE EXTENSION postgres_fdw;\nCREATE SERVER foreign_pg_server FOREIGN DATA WRAPPER postgres_fdw\n OPTIONS (host 'foreignhost', dbname 'foreign_db', port '5432');\n\nCREATE USER MAPPING FOR current_user \n SERVER foreign_pg_server \n OPTIONS (user 'foreign_user', password 'foreign_password');\n\nCREATE FOREIGN TABLE foreign_table (\n id INT,\n content TEXT\n) SERVER foreign_pg_server OPTIONS (table_name 'remote_table');\n```\n\n## Implementing Advanced Query Techniques in PGSQL for Chat2DB\n\nUtilizing advanced query techniques in PGSQL can significantly enhance Chat2DB's performance. Techniques such as Common Table Expressions (CTEs), window functions, and materialized views can simplify complex queries and improve efficiency.\n\n### Using Common Table Expressions (CTEs)\n\nCTEs can simplify complex queries by breaking them into manageable parts. Here's an example:\n\n```sql\nWITH recent_messages AS (\n SELECT * FROM chat_messages ORDER BY created_at DESC LIMIT 10\n)\nSELECT * FROM recent_messages WHERE user_id = 1;\n```\n\nThis query retrieves the most recent messages for a specific user.\n\n### Leveraging Window Functions\n\nWindow functions allow for more complex analytical queries. For instance, you can calculate the running total of messages sent by each user:\n\n```sql\nSELECT user_id, COUNT(*) OVER (PARTITION BY user_id ORDER BY created_at) AS message_count\nFROM chat_messages;\n```\n\n### Using Materialized Views\n\nMaterialized views can cache frequent query results to enhance performance. For instance, creating a materialized view for user activity can be done as follows:\n\n```sql\nCREATE MATERIALIZED VIEW user_activity AS\nSELECT user_id, COUNT(*) AS total_messages\nFROM chat_messages\nGROUP BY user_id;\n```\n\n## Leveraging PGSQL Extensions for Enhanced Functionality in Chat2DB\n\nPGSQL supports various extensions that can enhance Chat2DB's functionality. Utilizing extensions like PostGIS for geospatial data support can be beneficial for location-based chat applications.\n\n### PostGIS for Geospatial Data Support\n\nPostGIS allows for advanced geospatial queries. For example, you can store location data for chat users:\n\n```sql\nCREATE EXTENSION postgis;\n\nCREATE TABLE user_locations (\n user_id INT,\n location GEOGRAPHY(POINT, 4326)\n);\n\nINSERT INTO user_locations (user_id, location) VALUES (1, ST_SetSRID(ST_MakePoint(-73.9857, 40.7484), 4326));\n```\n\n### pg_partman for Table Partitioning\n\nThe `pg_partman` extension facilitates table partitioning for improved data management. It automates the creation of child tables based on a specified interval, making maintenance easier.\n\n### pg_stat_statements for Query Performance Tracking\n\nUsing `pg_stat_statements` allows developers to track query performance and identify bottlenecks. This extension provides valuable insights into the most frequently executed queries.\n\n## Ensuring Data Security and Integrity in Chat2DB with PGSQL\n\nData security and integrity are paramount in applications like Chat2DB. Implementing measures such as role-based access control, encryption, and transaction management can help maintain secure and reliable data.\n\n### Role-based Access Control\n\nImplementing role-based access control (RBAC) in PGSQL allows for granular permissions management. This can be done as follows:\n\n```sql\nCREATE ROLE chat_user;\nGRANT SELECT, INSERT ON chat_messages TO chat_user;\n```\n\n### Encryption for Data at Rest and in Transit\n\nUsing encryption methods for sensitive data can enhance security. For data in transit, consider using SSL connections. For data at rest, you can encrypt specific columns:\n\n```sql\nCREATE TABLE secure_data (\n id SERIAL PRIMARY KEY,\n sensitive_info TEXT ENCRYPTED WITH (KEY = 'encryption_key')\n);\n```\n\n### Transaction Management\n\nMaintaining data consistency through transaction management is crucial. Using transactions in PGSQL can be done as follows:\n\n```sql\nBEGIN;\n\nINSERT INTO chat_messages (user_id, message) VALUES (1, 'Hello World');\nUPDATE users SET last_activity = NOW() WHERE id = 1;\n\nCOMMIT;\n```\n\n### Audit Logs\n\nSetting up audit logs to track database activities is essential for compliance and monitoring. You can create an audit table and trigger for this purpose.\n\n```sql\nCREATE TABLE audit_log (\n id SERIAL PRIMARY KEY,\n action TEXT,\n changed_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE OR REPLACE FUNCTION log_changes() RETURNS TRIGGER AS $$\nBEGIN\n INSERT INTO audit_log (action) VALUES (TG_OP || ' on ' || TG_TABLE_NAME);\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER user_changes\nAFTER INSERT OR UPDATE OR DELETE ON users\nFOR EACH ROW EXECUTE FUNCTION log_changes();\n```\n\n## Monitoring and Performance Tuning of PGSQL in Chat2DB\n\nA comprehensive guide on monitoring and tuning PGSQL databases in applications like Chat2DB is essential. Utilizing tools like pgAdmin and pgBouncer can help manage database load and optimize performance.\n\n### Using pgAdmin for Database Management\n\npgAdmin is a powerful tool for managing PostgreSQL databases. It provides a user-friendly interface for monitoring database performance and executing queries.\n\n### Connection Pooling with pgBouncer\n\npgBouncer is an excellent tool for connection pooling, which can help manage database connections efficiently. Configuring pgBouncer can reduce the overhead of establishing new connections.\n\n### Interpreting PGSQL Performance Metrics\n\nPGSQL provides built-in performance metrics that can help you monitor database health. Understanding metrics like `pg_stat_activity` and `pg_stat_user_tables` is crucial for performance tuning.\n\n### Configuring Optimal Settings\n\nAdjusting configuration settings like `work_mem` and `shared_buffers` can optimize performance:\n\n```sql\nSET work_mem = '64MB';\nSET shared_buffers = '256MB';\n```\n\n### Routine Database Maintenance Tasks\n\nRoutine maintenance tasks such as vacuuming and analyzing tables can help keep your database performing optimally:\n\n```sql\nVACUUM ANALYZE chat_messages;\n```\n\n## FAQs\n\n1. **What is PGSQL?**\n PGSQL, or PostgreSQL, is an advanced open-source relational database management system known for its robustness and performance. [Learn more](https://en.wikipedia.org/wiki/PostgreSQL).\n\n2. **How does Chat2DB utilize AI?**\n Chat2DB leverages AI technologies to enhance database management, making it easier for developers and analysts to interact with databases using natural language.\n\n3. **What are the performance challenges of Chat2DB?**\n Performance challenges include optimized database queries, managing high concurrent connections, and ensuring low-latency responses.\n\n4. **How can I optimize my PGSQL database for Chat2DB?**\n You can optimize your database by implementing effective indexing, partitioning tables, and utilizing advanced query techniques.\n\n5. **Where can I find more information about Chat2DB?**\n You can learn more about Chat2DB and its features by visiting the [official website](https://chat2db.ai).\n\n\u901a\u8fc7\u4ee5\u4e0a\u5185\u5bb9\uff0c\u6211\u4eec\u6df1\u5165\u63a2\u8ba8\u4e86\u5982\u4f55\u901a\u8fc7PGSQL\u4f18\u5316Chat2DB\u7684\u6570\u636e\u5e93\u6027\u80fd\uff0c\u786e\u4fdd\u5e94\u7528\u7684\u9ad8\u6548\u548c\u5b89\u5168\u3002\u5e0c\u671b\u672c\u6587\u80fd\u4e3a\u60a8\u5728\u4f7f\u7528PGSQL\u65f6\u63d0\u4f9b\u5b9e\u7528\u7684\u6307\u5bfc\u548c\u5efa\u8bae\u3002"} + +## Get Started with Chat2DB Pro + +If you're looking for an intuitive, powerful, and AI-driven database management tool, give Chat2DB a try! Whether you're a database administrator, developer, or data analyst, Chat2DB simplifies your work with the power of AI. + +Enjoy a 30-day free trial of Chat2DB Pro. Experience all the premium features without any commitment, and see how Chat2DB can revolutionize the way you manage and interact with your databases. + +👉 [Start your free trial today](https://app.chat2db.ai) and take your database operations to the next level! + + +[![Click to use](/image/blog/bg/chat2db.jpg)](https://chat2db.ai/) diff --git a/public/blog/image/1735883692240.jpg b/public/blog/image/1735883692240.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dbeca6570f35070eb75795e48fcbcab847bbc76b GIT binary patch literal 51361 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 cMh{jML{TsQ1BxX>pa7}`tP