ホームページ  >  記事  >  ウェブフロントエンド  >  知っておくべきJavaScript面接の重要な質問

知っておくべきJavaScript面接の重要な質問

PHPz
PHPzオリジナル
2024-07-18 07:11:49716ブラウズ

Essential JavaScript Interview Questions You Need to Know

導入

Cypher Query Language (CQL) は、グラフ データベースをクエリするために設計された強力なツールです。従来のリレーショナル データベースとは異なり、グラフ データベースは、未定義の関係を持つ密接に接続されたデータの管理に優れています。 CQL は直感的かつ強力な構文を提供し、グラフ データベースに保存されているデータの作成、読み取り、更新、削除を簡単にします。この包括的なガイドでは、CQL の機能、制約、用語、コマンドについて、その可能性を最大限に活用するための実際的な例とともに説明します。

目次

暗号クエリ言語 (CQL) の機能

高度に接続されたデータに適しています

CQL の際立った特徴の 1 つは、高度に接続されたデータへの適合性です。関係が複雑で管理が面倒なことが多いリレーショナル データベースとは異なり、グラフ データベースは接続によって機能します。 CQL を使用すると、これらの関係を直感的かつ効率的にクエリできるため、ソーシャル ネットワークやレコメンデーション エンジンなどにとって理想的な選択肢となります。

ノードの複数のラベル

CQL では、ノードを複数のラベルに関連付けることができます。この柔軟性により、データのより適切な編成と分類が可能になります。たとえば、人を表すノードには、人、従業員、顧客などのラベルを付けることができ、それぞれが個人のアイデンティティのさまざまな側面を表します。

CQLの制約

断片化の制限事項

CQL は強力ですが、いくつかの制約があります。断片化は特定のドメインでのみ可能です。これは、場合によっては、最終的な答えを得るためにデータ全体を走査する必要があることを意味します。

最終的な答えを得るための完全なグラフ走査

一部のクエリ、特に複雑な関係を伴うクエリでは、返されたデータが正確で完全であることを確認するためにグラフ全体を走査する必要がある場合があります。これは、グラフのサイズと複雑さに応じて、リソースを大量に消費し、時間がかかる可能性があります。

CQL の用語

ノード

ノードはグラフ内のエンティティを表します。ノードには、名前、年齢、その他の関連属性など、エンティティに関する情報を保存するプロパティを持つことができます。

ラベル

ラベルを使用すると、ノードをグループ化できます。これらは SQL のテーブルの概念を置き換えます。たとえば、「人」というラベルが付いたノードは、人を表すすべてのノードをグループ化します。

関係

リレーションとは、2 つのノード間の具体化されたリンクです。これにより、SQL のリレーションシップの概念が置き換えられ、エンティティ間の直接接続が可能になります。

属性

属性は、ノードまたはリレーションが持つことができるプロパティです。たとえば、人物ノードには名前や年齢などの属性が含まれる場合がありますが、LIKES 関係には以来などの属性が含まれる場合があります。

CQL の基本コマンド

作成する

CREATE コマンドは、ノードと関係を作成するために使用されます。これはグラフ構造を構築するための基本です。

マッチ

MATCH コマンドは、グラフ内のパターンを検索するために使用されます。これは CQL でのクエリの基礎であり、指定された基準に基づいてノードと関係を取得できるようになります。

ノードの作成

基本的なノードの作成

CQL でのノードの作成は簡単です。 CREATE コマンドを使用し、その後にノードの詳細を入力します。

CREATE (:Person {name:\"John\", age:30})
CREATE (:Food {name:\"Pizza\"})

プロパティを使用したノードの作成

ノードは、ノードに関する情報を保存するキーと値のペアであるプロパティを使用して作成できます。

CREATE (:Person {name:\"Jane\", age:25, occupation:\"Engineer\"})
CREATE (:Food {name:\"Burger\", calories:500})

ノードの検索

基本的なノード検索

MATCH コマンドを使用すると、グラフ内のノードを検索できます。

MATCH (p:Person) RETURN p

WHERE 句を使用した高度な検索

より具体的な検索を行うには、WHERE 句を使用して、プロパティに基づいてノードをフィルターします。

MATCH (p:Person)
WHERE p.age > 20
RETURN p.name, p.age

人間関係を築く

ノードの作成中に関係を作成する

ノードを作成するときに、ノード間の関係を作成できます。

CREATE (p:Person {name:\"John\", age:30})-[:LIKES]->(f:Food {name:\"Pizza\"})

既存のノード間の関係の作成

MATCH コマンドを使用して、既存のノード間に関係を作成することもできます。

MATCH (p:Person {name:\"John\"})
MATCH (f:Food {name:\"Pizza\"})
CREATE (p)-[r:LIKES]->(f)
RETURN r

ノードと関係の変更

属性の追加

SET コマンドを使用して、既存のノードに属性を追加できます。

MATCH (p:Person {name:\"John\"})
SET p.occupation = \"Developer\"
RETURN p

属性の削除

属性を削除するには、その値を NULL に設定します。

MATCH (p:Person {name:\"John\"})
SET p.age = NULL
RETURN p

Modifying Attributes

Attributes can be modified by setting them to new values.

MATCH (p:Person {name:\"John\"})
SET p.age = 35
RETURN p

Using Aggregate Functions in CQL

COUNT

The COUNT function returns the number of nodes or relationships.

MATCH (n) RETURN count(n)

AVG

The AVG function calculates the average value of a numeric property.

MATCH (n) RETURN avg(n.age)

SUM

The SUM function calculates the total sum of a numeric property.

MATCH (n) RETURN sum(n.age)

Advanced Queries in CQL

Number of Relations by Type

To get the count of each type of relationship in the graph, use the type function.

MATCH ()-[r]->() RETURN type(r), count(*)

Collecting Values into Lists

The COLLECT function creates a list of all values for a given property.

MATCH (p:Product)-[:BELONGS_TO]->(o:Order)
RETURN id(o) as orderId, collect(p)

Database Maintenance in CQL

Deleting Nodes and Relationships

To delete all nodes and relationships, use the DELETE command.

MATCH (a)-[r]->(b) DELETE a, r, b

Visualizing Database Schema

Visualize the database schema to understand the structure of your graph.

CALL db.schema.visualization YIELD nodes, relationships

Practical Tricks and Tips

Finding Specific Nodes

Here are three ways to find a node representing a person named Lana Wachowski.

// Solution 1
MATCH (p:Person {name: \"Lana Wachowski\"})
RETURN p

// Solution 2
MATCH (p:Person)
WHERE p.name = \"Lana Wachowski\"
RETURN p

// Solution 3
MATCH (p:Person)
WHERE p.name =~ \".*Lana Wachowski.*\"
RETURN p

Complex Query Examples

Display the name and role of people born after 1960 who acted in movies released in the 1980s.

MATCH (p:Person)-[a:ACTED_IN]->(m:Movie)
WHERE p.born > 1960 AND m.released >= 1980 AND m.released < 1990
RETURN p.name, a.roles

Add the label Actor to people who have acted in at least one movie.

MATCH (p:Person)-[:ACTED_IN]->(:Movie)
WHERE NOT (p:Actor)
SET p:Actor

Application Examples

Real-World Use Cases

Consider a database for an online store where you need to manage products, clients, orders, and shipping addresses. Here's how you might model this in CQL.

Example Queries

Let's create some example nodes and relationships for an online store scenario:

CREATE (p1:Product {id: 1, name: \"Laptop\", price: 1000})
CREATE (p2:Product {id: 2, name: \"Phone\", price: 500})
CREATE (c:Client {id: 1, name: \"John Doe\"})
CREATE (o:Order {id: 1, date: \"2023-06-01\"})
CREATE (adr:Address {id: 1, street: \"123 Main St\", city: \"Anytown\", country: \"USA\"})

Now, let's create the relationships between these nodes:

CREATE (p1)-[:BELONGS_TO]->(o)
CREATE (p2)-[:BELONGS_TO]->(o)
CREATE (c)-[:MADE]->(o)
CREATE (o)-[:SHIPPED_TO]->(adr)

Querying Products Ordered in Each Order

To find out the products ordered in each order, including their quantity and unit price, use the following query:

MATCH (p:Product)-[:BELONGS_TO]->(o:Order)
RETURN id(o) as orderId, collect(p)

Querying Clients and Shipping Addresses

To determine which client made each order and where each order was shipped, use this query:

MATCH (c:Client)-[:MADE]->(o:Order)-[:SHIPPED_TO]->(adr:Address)
RETURN c.name as client, id(o) as orderId, adr.street, adr.city, adr.country

FAQ

What is Cypher Query Language (CQL)?

Cypher Query Language (CQL) is a powerful query language designed specifically for querying and updating graph databases. It allows you to interact with data in a way that emphasizes the relationships between data points.

How does CQL differ from SQL?

While SQL is designed for querying relational databases, CQL is designed for graph databases. This means that CQL excels at handling complex, highly connected data, whereas SQL is better suited for tabular data structures.

Can I use CQL with any database?

CQL is primarily used with Neo4j, a popular graph database management system. However, other graph databases may have their own query languages with similar capabilities.

What are the benefits of using CQL?

CQL allows for intuitive querying of graph databases, making it easier to manage and analyze data with complex relationships. It supports a rich set of commands for creating, updating, and deleting nodes and relationships, as well as powerful query capabilities.

Is CQL difficult to learn?

CQL is designed to be user-friendly and intuitive. If you are familiar with SQL, you will find many similarities in CQL. The main difference lies in how data relationships are handled.

How can I optimize my CQL queries?

Optimizing CQL queries involves understanding your graph's structure and using efficient query patterns. Indexing frequently searched properties and avoiding unnecessary full graph traversals can significantly improve performance.

Conclusion

Cypher Query Language (CQL) is a robust tool for managing graph databases, offering powerful capabilities for querying and updating complex, highly connected data. By mastering CQL, you can leverage the full potential of graph databases, making it easier to handle intricate data relationships and perform sophisticated analyses.

以上が知っておくべきJavaScript面接の重要な質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。