Kafka data query method and device and computer readable storage medium
1. A method for querying kafka data is characterized by comprising the following steps:
acquiring a first key character of data to be queried;
determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character;
judging whether the value of the bit corresponding to the first query value in each bitmap corresponding to the first partition is 1 or not so as to determine n bitmaps, wherein the value of the bit corresponding to the first query value in each bitmap in the n bitmaps is 1, and n is an integer greater than or equal to 1;
and extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
2. The method of claim 1, wherein determining the first partition in which the data to be queried is located in the kafka system according to the first key character comprises:
acquiring the number of partitions in the kafka system and a sequencing serial number corresponding to each partition;
performing first hash operation on the first key character according to the number of the partitions to obtain a first hash value;
and taking the partition with the sorting sequence number equal to the first hash value as a first partition in which the data to be queried is located in the kafka system.
3. The method of claim 1, wherein determining a first query value for the data to be queried in the first partition based on the first key character comprises:
acquiring the total number of bits in any bitmap in the bitmaps corresponding to the first partition, wherein the total number of bits in each bitmap in the bitmaps corresponding to the first partition is the same;
and performing second hash operation on the first key character according to the total digit to obtain the first query value.
4. The method of claim 3, wherein performing a second hash operation on the first key character based on the total number of bits to obtain the first query value comprises:
obtaining the hash number of the first key character by using a non-encryption hash function;
carrying out remainder operation on the hash number and the total digit to obtain a remainder of the hash number and the total digit;
the remainder is taken as the first query value.
5. The method of claim 1, wherein the method further comprises:
setting the values of all the bits in each bitmap in the bitmap corresponding to each partition in the kafka system to be 0 at preset time intervals;
and calculating a second query value of each stored data according to a second key character of each stored data in each partition in the kafka system, and setting the value of a bit corresponding to the second query value in the bitmap corresponding to the segmented file in which each stored data is located to be 1 so as to complete the updating of the corresponding bitmap.
6. The method of claim 1, wherein the method further comprises:
acquiring a third key character of data to be stored;
according to the third key character, obtaining a third partition of the data to be stored in the kafka system and a third query value of the data to be stored in the third partition;
and storing the data to be stored into a segmented file in the third partition, and setting the value of a bit corresponding to the third query value in a bitmap corresponding to the segmented file to be 1, so that when the data to be queried exists, data query is performed according to the method of claims 1 to 5.
7. An apparatus for querying kafka data, comprising: the device comprises an acquisition unit, a storage information searching unit, a judging unit and a data searching unit;
the acquiring unit is used for acquiring a first key character of the data to be queried;
the storage information searching unit is used for determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character;
the judging unit is configured to judge whether a bit value corresponding to the first query value in each of the bitmaps corresponding to the first partition is 1, so as to determine n bitmaps, where a bit value corresponding to the first query value in each of the n bitmaps is 1, and n is an integer greater than or equal to 1;
and the data searching unit is used for extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
8. The apparatus of claim 7, wherein the stored information lookup unit comprises: a calculation subunit and a partition determination subunit;
the obtaining unit is further configured to obtain the number of partitions in the kafka system and a sorting sequence number corresponding to each partition;
the calculating subunit is configured to perform a first hash operation on the first key character according to the number of the partitions to obtain a first hash value;
and the partition determining subunit is configured to use the partition with the sorting sequence number equal to the first hash value as the first partition in which the data to be queried is located in the kafka system.
9. An apparatus for querying kafka data, comprising: the kafka data query method as claimed in any one of claims 1 to 6, wherein the memory is used for storing a computer program, the transceiver is used for transceiving a message, and the processor is used for reading the computer program and executing the kafka data query method.
10. A computer-readable storage medium having stored thereon instructions for performing the method of querying kafka data as recited in any one of claims 1 to 6, when the instructions are run on a computer.
Background
Kafka is a high-throughput distributed publish-subscribe message system, and is an open source stream processing platform maintained by the Apache foundation, and a core code is mainly compiled by java and scala; in general, kafka is applicable to log collection, message system, user activity tracking, operation index monitoring, and streaming processing, and is widely applied to a message system in a large data scenario due to its excellent advantage of high throughput.
At present, for querying data in the Kafka system, a KSQL system introduced by confuentinc is mainly used, the KSQL system accesses the Kafka data to consumption in real time through a distributed computing engine, and a client can query the Kafka data in real time through the KSQL, and the main principle is as follows: the KSQL is deployed on all nodes in the Kafka system, and the data access engine Kafka-Stream of the KSQL is deployed on each node of the Kafka cluster at the same time, so that data query is realized by searching each node.
However, the aforementioned query method has the following disadvantages: when querying a certain data in the kafka system, data in the whole Topic (message set) or Partition (Partition) in the system needs to be traversed, and further the query efficiency is low, so how to improve the data lookup efficiency in the kafka system becomes a problem to be solved urgently.
Disclosure of Invention
The invention aims to provide a method and a device for querying kafka data and a computer-readable storage medium, so as to solve the problem of low data querying efficiency in the existing kafka system.
In order to achieve the purpose, the invention adopts the following technical scheme:
the invention provides a method for querying kafka data, which comprises the following steps:
acquiring a first key character of data to be queried;
determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character;
judging whether the value of the bit corresponding to the first query value in each bitmap corresponding to the first partition is 1 or not so as to determine n bitmaps, wherein the value of the bit corresponding to the first query value in each bitmap in the n bitmaps is 1, and n is an integer greater than or equal to 1;
and extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
Based on the above disclosure, the present invention can determine the area (i.e. the first partition) stored in the kafka system by the first key character of the data to be queried, thereby reducing the search range; meanwhile, a first query value of the data to be queried in the first partition can be obtained according to the first key character, which is substantially as follows: using the first query value to find the bit corresponding to the first query value in each bitmap in the first partition, thereby excluding the segment file which does not store the data to be queried by judging whether the value of the found bit is 1 (that is, if the flag of the bit is 1, the segment file corresponding to the bitmap stores the data to be queried, otherwise, if the flag is 0, the segment file does not exist); therefore, the filtering of the segmented files in the first partition can be realized during searching, so that the number of the files traversed during query is reduced; therefore, the method and the device can avoid traversing each partition and each segmented file in the kafka system during query, and further improve query efficiency.
In one possible design, determining, according to the first keyword, a first partition in which the data to be queried is located in the kafka system includes:
acquiring the number of partitions in the kafka system and a sequencing serial number corresponding to each partition;
performing first hash operation on the first key character according to the number of the partitions to obtain a first hash value;
and taking the partition with the sorting sequence number equal to the first hash value as a first partition in which the data to be queried is located in the kafka system.
Based on the disclosure, the invention discloses a specific method for determining a region (namely a first partition) of data to be queried, which is stored in a kafka system, according to a first key character, namely, according to the number of the partitions, performing a first hash operation on the first key character to obtain a first hash value (the essence is that the hash number of the first key character is obtained by using a non-encryption hash function, then the hash number is divided by the number of the partitions, the remainder is taken, and the remainder is the first hash value); and the partition with the sorting sequence number equal to the first hash value is used as the first partition.
In one possible design, determining a first query value of the data to be queried in the first partition according to the first key character includes:
acquiring the total number of bits in any bitmap in the bitmaps corresponding to the first partition, wherein the total number of bits in each bitmap in the bitmaps corresponding to the first partition is the same;
and performing second hash operation on the first key character according to the total digit to obtain the first query value.
In one possible design, performing a second hash operation on the first key character according to the total number of bits to obtain the first query value includes:
obtaining the hash number of the first key character by using a non-encryption hash function;
carrying out remainder operation on the hash number and the total digit to obtain a remainder of the hash number and the total digit;
the remainder is taken as the first query value.
Based on the disclosure, the invention discloses a specific method for obtaining a first query value of data to be queried in a first partition according to a first key character, wherein the principle is consistent with the determination of the first partition, the method comprises the steps of firstly obtaining the hash number of the first key character by using a non-encryption hash function, then dividing the hash number by the total number of bits in any bitmap in the first partition, and taking the remainder, and the remainder obtained by the calculation is used as the first query value.
In one possible design, the method further includes:
setting the values of all the bits in each bitmap in the bitmap corresponding to each partition in the kafka system to be 0 at preset time intervals;
and calculating a second query value of each stored data according to a second key character of each stored data in each partition in the kafka system, and setting the value of a bit corresponding to the second query value in the bitmap corresponding to the segmented file in which each stored data is located to be 1 so as to complete the updating of the corresponding bitmap.
Based on the disclosure, the method sets the values of all the bits in each bitmap in the bitmap corresponding to each partition in the kafka system to 0 (namely, the method is equivalent to performing data clearing on all the bitmaps in each partition) at preset time intervals, and then calculates the second query value of each stored data according to the second key character of each stored data in each partition so as to reset the value of the bit corresponding to the second query value in the bitmap corresponding to the segment file where each stored data is located to 1; through the design, the timeliness of the data in the bitmap can be guaranteed, and the accuracy of data searching is further guaranteed.
In one possible design, the method further includes:
acquiring a third key character of data to be stored;
according to the third key character, obtaining a third partition of the data to be stored in the kafka system and a third query value of the data to be stored in the third partition;
and storing the data to be stored into a segmented file in the third partition, and setting the value of a bit corresponding to the third query value in a bitmap corresponding to the segmented file to be 1, so that when the data to be queried exists, data query is performed according to the method of claims 1 to 5.
Based on the above disclosure, the present invention discloses a specific method for storing data, that is, during data storage, a third partition in which the data to be stored is located in the kafka system is determined through a third key character of the data to be stored (i.e. it is equivalent to determining a storage area of the data to be stored in the kafka system), and a third query value in the third partition, so that when the data to be stored is stored into a segment file in the third partition, a value 1 of a bit corresponding to the third query value in the segment file corresponding to the data to be stored is set (which is substantial in that, by configuring a bitmap for each segment file, and setting a value 1 of a bit corresponding to the third query value in the data storage, the value 1 is used for representing that the data is stored in the segment file); through the design, the query index can be provided for subsequent data search, and the segmented files which do not store the data to be queried can be filtered out during query, so that the data can be quickly searched, and the searching efficiency is improved.
In a second aspect, the present invention provides an apparatus for querying kafka data, including: the device comprises an acquisition unit, a storage information searching unit, a judging unit and a data searching unit;
the acquiring unit is used for acquiring a first key character of the data to be queried;
the storage information searching unit is used for determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character;
the judging unit is configured to judge whether a bit value corresponding to the first query value in each of the bitmaps corresponding to the first partition is 1, so as to determine n bitmaps, where a bit value corresponding to the first query value in each of the n bitmaps is 1, and n is an integer greater than or equal to 1;
and the data searching unit is used for extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
In one possible design, the stored information searching unit includes: a calculation subunit and a partition determination subunit;
the obtaining unit is further configured to obtain the number of partitions in the kafka system and a sorting sequence number corresponding to each partition;
the calculating subunit is configured to perform a first hash operation on the first key character according to the number of the partitions to obtain a first hash value;
and the partition determining subunit is configured to use the partition with the sorting sequence number equal to the first hash value as the first partition in which the data to be queried is located in the kafka system.
In one possible design:
the acquiring unit is further configured to acquire a total number of bits in any one of the bitmaps corresponding to the first partition, where the total number of bits in each bitmap in the bitmaps corresponding to the first partition is the same;
the calculating subunit is further configured to perform a second hash operation on the first key character according to the total number of bits, so as to obtain the first query value.
In one possible design:
the calculating subunit obtains a hash number of the first key character by specifically using a non-encryption hash function;
the computing subunit performs a remainder operation on the hash number and the total digit to obtain a remainder of the hash number and the total digit;
the calculating subunit further specifically uses the remainder as the first query value.
In one possible design, the apparatus further includes: a data clearing unit;
the data clearing unit is used for setting the values of all bit positions in each bitmap in the bitmap corresponding to each partition in the kafka system to be 0 at intervals of preset time;
and the data clearing unit is further used for calculating a second query value of each stored data according to a second key character of each stored data in each partition in the kafka system, and setting the value of a bit corresponding to the second query value in a bitmap corresponding to the segmented file of each stored data to 1 so as to complete the updating of the corresponding bitmap.
In one possible design, the apparatus further includes: a data storage unit;
the acquisition unit is also used for acquiring a third key character of the data to be stored;
the data storage unit is used for obtaining a third partition of the data to be stored in the kafka system and a third query value of the data to be stored in the third partition according to the third key character;
the data storage unit is further configured to store the data to be stored into a segment file in the third partition, and set a value of a bit corresponding to the third query value in a bitmap corresponding to the segment file to 1, so that when the data to be queried exists, data query is performed according to the data query method of the first aspect.
In a third aspect, the present invention provides another apparatus for querying kafka data, which takes an apparatus as a computer main device as an example, and includes a memory, a processor and a transceiver, which are sequentially and communicatively connected, where the memory is used to store a computer program, the transceiver is used to transmit and receive a message, and the processor is used to read the computer program and execute a method for querying the kafka data as may be designed in any one of the first aspect and the first aspect.
In a fourth aspect, the present invention provides a computer-readable storage medium having stored thereon instructions which, when executed on a computer, perform a method of querying the kafka data as the first aspect or any one of the possible designs of the first aspect.
In a fifth aspect, the present invention provides a computer program product containing instructions which, when run on a computer, cause the computer to perform a method of querying the kafka data as set forth in the first aspect or any one of the possible designs of the first aspect.
Drawings
FIG. 1 is a flow chart illustrating the steps of the method for querying kafka data provided by the present invention;
FIG. 2 is a schematic flow chart illustrating steps of a data storage method according to the present invention;
FIG. 3 is a schematic structural diagram of a device for querying kafka data provided by the present invention;
fig. 4 is a schematic structural diagram of a computer main device provided in the present invention.
Detailed Description
The invention is further described with reference to the following figures and specific embodiments. It should be noted that the description of the embodiments is provided to help understanding of the present invention, but the present invention is not limited thereto. Specific structural and functional details disclosed herein are merely illustrative of example embodiments of the invention. This invention may, however, be embodied in many alternate forms and should not be construed as limited to the embodiments set forth herein.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of example embodiments of the present invention.
It should be understood that, for the term "and/or" as may appear herein, it is merely an associative relationship that describes an associated object, meaning that three relationships may exist, e.g., a and/or B may mean: a exists alone, B exists alone, and A and B exist at the same time; for the term "/and" as may appear herein, which describes another associative object relationship, it means that two relationships may exist, e.g., a/and B, may mean: a exists independently, and A and B exist independently; in addition, for the character "/" that may appear herein, it generally means that the former and latter associated objects are in an "or" relationship.
Examples
Before describing the scheme of the present invention, the basic concept of the kafka system is first described:
kafka is a high-throughput distributed publish-subscribe message system, and is an open source stream processing platform maintained by the Apache foundation, and a core code is mainly compiled by java and scala; in general, kafka is applicable to log collection, message system, user activity tracking, operation index monitoring, and streaming processing, and is widely applied to a message system in a large data scenario due to its excellent advantage of high throughput.
The storage structure in the Kafka system is: the kafka system is provided with a plurality of topics (message sets), each message set comprises a plurality of partitions, and each Partition also comprises a plurality of segmentfiles; when data stored in a kafka system needs to be queried, the data can only be traversed from beginning to end, that is, each partition and a segmented file in each partition need to be traversed until the data to be queried is found, so that the query efficiency is very low; therefore, the present embodiment provides a query method to solve the problem of low query efficiency in the prior art.
In the method for querying kafka data provided by the first aspect of this embodiment, the first keyword of the data to be queried may be used to determine a storage area (i.e. a first partition) in the kafka system and a first query value in the first partition, which substantially functions as: obtaining the bit corresponding to the first query value in each bitmap in the bitmaps corresponding to the first partition by using the first query value, so as to exclude the segmented file which is not stored with the data to be queried in the first partition by judging whether the value of the bit corresponding to the first query value is 1 or not; therefore, the method can realize the filtration of the segmented files in the first partition, thereby reducing the files traversed during query; therefore, each partition and each segmented file in the kafka system can be prevented from being traversed during query, and query efficiency is improved.
As shown in fig. 1, the method for querying kafka data provided in the first aspect of this embodiment may include, but is not limited to, the following steps S101 to S104.
S101, acquiring a first key character of data to be queried.
Step S101 is a process of obtaining a first key character of the data to be queried, so as to determine a storage area (i.e. a first partition) where the data to be queried is located and a segment file in the storage area that needs to be traversed according to the first key character, so as to complete data search.
In this embodiment, for example, the first key character of the data to be queried is obtained when it is stored in the kafka system, and may be, but is not limited to: when the user stores the data, the data is preset, and the data is sent to the user terminal and the server as a log file or stored locally during storage, so that the first key character corresponding to the data to be queried can be found during subsequent data query.
In this embodiment, the first key character may be, but is not limited to: before data to be queried is stored in a kafka system, extracting a string of character strings representing data content from the data to be queried as a first key character; of course, the first key character may be added manually by the user for each data to be queried at the time of storage.
After the first keyword of the data to be queried is obtained, the storage area of the data to be queried in the kafka system and the corresponding query value can be determined by using the first keyword, as shown in the following step S102.
S102, determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character.
Step S102, determining a storage area of the data to be queried in the kafka system by using the first key character; because a plurality of message sets (i.e. Topic) exist in the kafka system, each message set comprises a plurality of partitions (all partition areas are sorted by numbers from small to large), and each partition also comprises a plurality of segment files (each segment file stores a plurality of pieces of data); therefore, after the storage area (i.e., the first partition) is determined by using the first keyword, the partitions of the query can be reduced, thereby improving the search efficiency.
The first query value is used for determining the bit in the bitmap corresponding to each segmented file in the first partition, so as to know whether the data to be queried is stored in the corresponding segmented file by judging whether the value of the bit in the bitmap corresponding to the first query value is 1 or not; if the value of bit corresponding to the first query value is 1, the data to be queried is stored in the corresponding segmented file; otherwise, if the value is 0, it indicates that the data to be queried is not stored in the corresponding segmented file; thus; when searching, whether the data to be searched is stored in the corresponding segmented file is determined only by judging whether the value of the bit corresponding to the first query value is 1, so that the data is searched only in the segmented file corresponding to the bitmap with the bit value corresponding to the first query value being 1, that is, the segmented file in which the data to be searched is not stored in the first partition can be filtered, the number of traversed files is reduced, and the query efficiency is improved.
In addition, the bitmap is used for storing data in the memory and can support the operation on the data of each bit; therefore, compared with the data reading from the kafka system, the data reading speed in the bitmap is higher (the data in the kafka system is stored in a disk), so that whether the data to be queried is stored in the corresponding segmented sub-component or not is judged by reading the value of the bit in the bitmap, and the query efficiency can be improved in terms of the data reading speed.
Therefore, through the design, the accurate positioning of the data to be queried in the kafka system can be realized, so that the number of traversed partitions and the number of segmented files are reduced, and the purpose of improving the query efficiency is achieved.
The following provides a specific process for determining the first partition in which the data to be queried is located in the kafka system according to the first key character, which may include, but is not limited to, the following steps S102 a-S102 c.
S102a, acquiring the number of the partitions in the kafka system and a sequencing serial number corresponding to each partition.
S102b, according to the number of the partitions, performing a first hash operation on the first key character to obtain a first hash value.
S102c, taking the partition with the sorting sequence number equal to the first hash value as a first partition in which the data to be inquired is located in the kafka system.
The principle of steps S102 a-S102 c is: calculating the hash value of the first key character to determine the storage area corresponding to the data to be queried, the following is described as an example:
assume that the total number of partitions in the kafka system is 10000, i.e., the sequence number of each partition is from 1 to 10000.
The data to be queried is exemplified by attribute information of a multimedia device in a certain elevator, and the attribute information can include, but is not limited to: equipment number, machine type, elevator installation position, elevator installation number, maintenance personnel information and the like; for example, the first key character is a device number in the attribute information, and examples may include but are not limited to: QWEADC 123456123.
Then, according to step S102b, a first hash operation needs to be performed on the first key character according to the number of partitions (i.e. 10000), and a specific calculation method of the first hash operation is provided as follows:
firstly, obtaining the hash number of a first key character by using a non-encryption hash function, namely, carrying out hash transformation on the first key character by using the non-encryption hash function to obtain the corresponding hash number; assume that the hash number of the first key character QWEADC123456123 is: 56421564861231.
then, dividing the hash number of the first key character by the number of the partitions, taking the remainder of the result, and taking the remainder as a first hash value; i.e., 56421564861231 is divided by 10000, and the remainder is 1231, the first hash value is 1231.
Finally, according to step S102c, the partition with the sequence number 1231 may be stored as the storage area of the attribute information of the multimedia device, i.e., the attribute information may be stored in the partition No. 1231.
Through the design, the storage area of the data can be determined by utilizing the first key character during searching, so that the query range is reduced, the problem that all partitions in the kafka system need to be traversed during querying is solved, and the searching efficiency is improved.
Similarly, the following provides a specific method for determining the first query value of the data to be queried in the first partition according to the first keyword, which may include, but is not limited to, the following steps S102 d-S102 e.
S102d, acquiring the total number of bits in any one of the bitmaps corresponding to the first partition, wherein the total number of bits in each bitmap in the bitmaps corresponding to the first partition is the same.
S102e, according to the total digit, performing second hash operation on the first key character to obtain the first query value.
The calculation principle of steps S102 d-S102 e is consistent with the principle of the steps S102 a-S102 c, namely: first, the total digit of the bits in any bitmap in the first partition is obtained, then, according to the total digit, the second Hash operation is carried out on the first key character, and the obtained result is the second query value.
Certainly, the process of performing the second hash operation in step S102e is the same as that in step S102b, that is, the hash number of the first key character is obtained by using the non-encrypted hash function, and then the hash number and the total number of bits are subjected to the remainder operation to obtain the remainder of the hash number and the total number of bits; and the remainder is used as the first query value.
On the basis of the foregoing example, the principle explanation of the foregoing steps S102d to S102e is performed:
that is, the first keyword of the data to be queried is still: QWEADC 123456123; carrying out hash transformation on the non-encrypted hash function by using the non-encrypted hash function, wherein the obtained hash number is still: 56421564861231, respectively; which is stored in the segment file of partition No. 1231.
Assuming that the total number of bits in any bitmap in partition No. 1231 is 100000 (in this embodiment, the total number of bits in a bitmap can be preset by a user according to the use environment and the use requirement), the remainder obtained by dividing 56421564861231 by 100000 is 61231; therefore, the first query value of the data to be queried in partition No. 1231 is 61231.
In this embodiment, in order to enable the first query value (i.e., the hash value obtained by performing the second hash operation on the first key character) of the data to be queried to be better hashed on the bitmap corresponding to the segment file where the first query value is located, the total number of bits in the bitmap may be set to be 5-10 times the number of data pieces in the corresponding segment file, but not limited thereto.
After the first partition in which the data to be queried is located and the first query value are obtained, whether the value of the bit corresponding to the first query value in each bitmap in the bitmaps corresponding to the first partition is 1 or not can be obtained by using the first query value, so that the segmented files in the first partition, in which the data to be queried must not be stored, are excluded, and filtering of the segmented files in the first partition is realized, as shown in the following step S103.
S103, judging whether the value of the bit corresponding to the first query value in each bitmap corresponding to the first partition is 1 or not so as to determine n bitmaps, wherein the value of the bit corresponding to the first query value in each bitmap in the n bitmaps is 1, and n is an integer greater than or equal to 1.
In this embodiment, since there may be more than one data sent, that is, one message queue may be sent, the first key characters corresponding to all message data in the same message queue are the same; therefore, in order to avoid missing query of data during data search, it is necessary to determine whether the value of bit corresponding to the first query value in all the bitmap in the first partition is 1, so as to ensure that all the segment files storing the data to be queried can be screened out, and thus the comprehensiveness of data search is ensured.
Also on the basis of the foregoing example, step S103 is explained: the first partition is partition No. 1231, and the first query value is 61231; therefore, it is necessary to determine whether the 61231 th bit value in all bitmaps in the partition No. 1231 is 1, and if so, it is stated that the data to be queried is stored in the segment file corresponding to the bitmap; if the number is 0, the segmented file corresponding to the bitmap does not store the data to be inquired; therefore, in this embodiment, a bitmap with an 61231 th bit value of 1 needs to be extracted, so as to search for data to be queried in the segmented file corresponding to the extracted bitmap.
Through step S103, filtering of the segmented files in which the data to be queried is not stored in the first partition can be implemented, so as to reduce the amount of query files, thereby improving query efficiency.
After extracting n bitmaps from the first partition, the data in the n bitmaps may be searched, as shown in step S104.
S104, extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
For example, if 10 bitmaps are extracted from the first partition, the segmented files corresponding to the 10 bitmaps need to be searched; the rules for searching may be, but are not limited to: and as long as the first key character exists in the kafka data in the corresponding segmented file, taking the kafka data as the data to be queried.
Therefore, by the method for querying kafka data, which is elaborated by the foregoing steps S101 to S104 and the sub-steps thereof, the invention can utilize the first key character of the data to be queried to determine the first partition in the kafka system, thereby narrowing the query range; meanwhile, the segmented files which are not stored with the data to be inquired in the first partition are excluded by judging whether the value of the bit corresponding to the first inquiry value in each bitmap corresponding to the first partition is 1 or not; therefore, the method and the device can avoid traversing each partition and each segmented file in the kafka system during query, and further improve query efficiency.
In addition, since the data in the kafka system has timeliness, in order to avoid the failure of the data in the corresponding bitmap due to the failure of the data in the kafka system, in the embodiment, the data in the corresponding bitmap of the expired data in the kafka system needs to be periodically cleared to ensure the timeliness of the data, and the implementation steps are shown in the following step S105 and step S106.
And S105, setting the value of all the bits in each bitmap in the bitmap corresponding to each partition in the kafka system to be 0 at preset time intervals.
S106, calculating a second query value of each stored data according to a second key character of each stored data in each partition in the kafka system, and setting the value of a bit corresponding to the second query value in a bitmap corresponding to a segmented file where each stored data is located to be 1 so as to complete the updating of the corresponding bitmap.
The principle of step S105 and step S106 is: setting a time interval by a user, namely setting the bit value of each bitmap in each partition in the kafka system to 0 every preset time interval (for example, 24 hours), then recalculating the second query value of each non-invalidated stored data in each partition after the preset time interval according to the calculation method in the step S102, so as to set the bit value corresponding to the second query value in the bitmap corresponding to the segment file where each stored data is located to 1, thereby completing the updating of the corresponding bitmap.
Through the design, the data in each bitmap in the kafka system can be cleared periodically (namely, the value of each bit is cleared and reset to 0, and according to the step S106, the value of the bit corresponding to the second query value of the stored data which is not invalidated in each partition is reset to 1), so that the timeliness of the data is ensured, and an accurate index is provided for subsequent data searching.
As shown in fig. 2, the following provides a data storage method, i.e. the query method in the foregoing first aspect is based on the storage method, and may include, but is not limited to, the following steps S201 to S203.
S201, acquiring a third key character of the data to be stored.
Step S201 is a process of acquiring the key character of the data to be stored, so as to determine the storage area (i.e. the third partition) in the kafka system and the third query value in the subsequent storage.
In this embodiment, it is preset by the user before storage, and may be, but is not limited to: and extracting a string of character strings representing data contents from the data to be stored as third key characters, arranging the third key characters of the data to be stored into a log file, and sending the log file to a user terminal, a server or locally storing the log file so as to obtain key characters of the data to be queried during subsequent data query, thereby realizing accurate search.
S202, according to the third key character, obtaining a third partition of the data to be stored in the kafka system and a third query value of the data to be stored in the third partition.
The method for obtaining the third partition and the third query value of the data to be stored in the kafka system according to the third key character in step S102 is the same as the calculation method in step S102, which is not described herein again.
S203, storing the data to be stored into a segmented file in the third partition, and setting the value of a bit corresponding to the third query value in a bitmap corresponding to the segmented file to be 1, so that when the data to be queried exists, data query is performed according to the method for querying kafka data in the first aspect.
Step S203 is a storage process, that is, data to be stored is stored in the segment file in the third partition.
For example, on the basis of the foregoing example, if the third partition obtained according to the third key character and the number of partitions is partition No. 1231, the data to be stored is stored in the segment file in partition No. 1231.
The following sets forth the rules for data storage by the kafka system: as already stated above, a plurality of segment files are provided in a partition, and each segment file includes a plurality of pieces of data, where each segment file is also numbered according to a serial number, so that when data is stored, the data is sequentially stored in the segment files according to the sequence of the stored data, and when the number of data in the segment file satisfies a preset value, the data is stored in the next sorted storage unit.
For example, there are 10 fragmented files in a partition, each fragmented file can only store 10 pieces of data, if the data in the first fragmented file is full, the data to be stored is stored in the second fragmented file, if the data in the second fragmented file is full, the data is stored in the third fragmented file, and so on until the data storage is completed.
Therefore, after the query partition is locked, to further improve the data search efficiency, the segmented files need to be filtered during search, and files without data to be queried are excluded; in this embodiment, the filtering of the file during the subsequent search is realized by configuring a bitmap for each segment file; namely, when the data to be stored is stored in the segmented file in the third partition, the value of the bit corresponding to the third query value in the bitmap corresponding to the segmented file is set to 1, so that the data to be stored in the segmented file is represented.
In this embodiment, bitmap is a storage structure of Redis (remote dictionary service), which opens up a memory with a specified length in the memory, and can support operations on data of each bit, and can easily handle scenes with billions of length levels; therefore, whether data are stored in the corresponding segmented file or not can be represented by using whether the value of each bit in the bitmap is 1 or 0, namely if the value of the bit corresponding to the third query value in one bitmap is 1, the segmented file corresponding to the bitmap stores the data to be stored, otherwise, if the value of the bit is 0, the segmented file corresponding to the bitmap does not store the data to be stored; therefore, when in subsequent searching, the first query value of the data to be queried is utilized to determine whether the value of the bit corresponding to the first query value in the bitmap is 1 or not, so as to judge whether the data to be queried is stored in the corresponding segmented file or not, thereby realizing the filtering of the segmented file and greatly improving the searching efficiency.
Therefore, by the storage method, an accurate query index can be provided for the query method in the first aspect, and the search efficiency is improved.
As shown in fig. 3, a second aspect of the present embodiment provides a hardware apparatus for implementing the kafka data query method according to the first aspect of the present embodiment or the data storage method according to the second aspect of the present embodiment, including: the device comprises an acquisition unit, a stored information searching unit, a judging unit and a data searching unit.
The acquiring unit is used for acquiring a first key character of the data to be inquired.
The storage information searching unit is used for determining a first partition of the data to be queried in the kafka system and a first query value of the data to be queried in the first partition according to the first key character.
The judging unit is configured to judge whether a value of a bit corresponding to the first query value in each of the bitmaps corresponding to the first partition is 1, so as to determine n bitmaps, where a value of a bit corresponding to the first query value in each of the n bitmaps is 1, and n is an integer greater than or equal to 1.
And the data searching unit is used for extracting the data to be inquired from the segmented files corresponding to the n bitmaps.
In one possible design, the stored information searching unit includes: a calculation subunit and a partition determination subunit.
The obtaining unit is further configured to obtain the number of partitions in the kafka system and a sorting sequence number corresponding to each partition.
And the calculating subunit is configured to perform a first hash operation on the first key character according to the number of the partitions, so as to obtain a first hash value.
And the partition determining subunit is configured to use the partition with the sorting sequence number equal to the first hash value as the first partition in which the data to be queried is located in the kafka system.
In one possible design:
the acquiring unit is further configured to acquire a total number of bits in any one of the bitmaps corresponding to the first partition, where the total number of bits in each bitmap in the bitmaps corresponding to the first partition is the same.
The calculating subunit is further configured to perform a second hash operation on the first key character according to the total number of bits, so as to obtain the first query value.
In one possible design:
the calculating subunit obtains the hash number of the first key character by specifically using a non-encryption hash function.
And the calculating subunit performs a remainder operation on the hash number and the total digit to obtain a remainder of the hash number and the total digit.
The calculating subunit further specifically uses the remainder as the first query value.
In one possible design, the apparatus further includes: and a data clearing unit.
And the data clearing unit is used for setting the values of all bit positions in each bitmap in the bitmap corresponding to each partition in the kafka system to be 0 at preset time intervals.
And the data clearing unit is further used for calculating a second query value of each stored data according to a second key character of each stored data in each partition in the kafka system, and setting the value of a bit corresponding to the second query value in a bitmap corresponding to the segmented file of each stored data to 1 so as to complete the updating of the corresponding bitmap.
In one possible design, the apparatus further includes: and a data storage unit.
The acquisition unit is further used for acquiring a third key character of the data to be stored.
And the data storage unit is used for obtaining a third partition of the data to be stored in the kafka system and a third query value of the data to be stored in the third partition according to the third key character.
The data storage unit is further configured to store the data to be stored into a segment file in the third partition, and set a value of a bit corresponding to the third query value in a bitmap corresponding to the segment file to 1, so that when the data to be queried exists, data query is performed according to the data query method of the first aspect.
For the working process, the working details, and the technical effects of the apparatus provided in this embodiment, reference may be made to the first aspect or the second aspect of the embodiment, which is not described herein again.
As shown in fig. 4, a third aspect of the present embodiment provides a computer main apparatus, including: a memory, a processor and a transceiver, which are connected in sequence in communication, wherein the memory is used for storing a computer program, the transceiver is used for transceiving a message, and the processor is used for reading the computer program and executing the kafka data query method according to the first aspect of the embodiment or the data storage method according to the second aspect of the embodiment.
For example, the Memory may include, but is not limited to, a Random Access Memory (RAM), a Read Only Memory (ROM), a Flash Memory (Flash Memory), a First In First Out (FIFO), and/or a First In Last Out (FILO), and the like; the processor may not be limited to a microprocessor of a model number STM32F105 series, a reduced instruction set computer (RSIC) microprocessor, an architecture processor such as X86, or a processor integrated with a neural-Network Processing Unit (NPU); the transceiver may be, but is not limited to, a wireless fidelity (WIFI) wireless transceiver, a bluetooth wireless transceiver, a General Packet Radio Service (GPRS) wireless transceiver, a ZigBee wireless transceiver (ieee802.15.4 standard-based low power local area network protocol), a 3G transceiver, a 4G transceiver, and/or a 5G transceiver, etc. In addition, the device may also include, but is not limited to, a power module, a display screen, and other necessary components.
For the working process, the working details, and the technical effects of the computer main device provided in this embodiment, reference may be made to the first aspect or the second aspect of the embodiment, which is not described herein again.
A fourth aspect of the present embodiment provides a computer-readable storage medium storing instructions that include the kafka data query method according to the first aspect of the present embodiment or the data storage method according to the second aspect of the present embodiment, that is, the computer-readable storage medium has instructions stored thereon, and when the instructions are executed on a computer, the kafka data query method according to the first aspect of the present embodiment or the data storage method according to the second aspect of the present embodiment is performed.
The computer-readable storage medium refers to a carrier for storing data, and may include, but is not limited to, floppy disks, optical disks, hard disks, flash memories, flash disks and/or Memory sticks (Memory sticks), etc., and the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices.
For the working process, the working details, and the technical effects of the computer-readable storage medium provided in this embodiment, reference may be made to the first aspect or the second aspect of the embodiment, which is not described herein again.
A fifth aspect of the present embodiment provides a computer program product containing instructions, which when run on a computer, cause the computer to execute the method for querying kafka data according to the first aspect of the present embodiment or the method for storing data according to the second aspect of the present embodiment, wherein the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable apparatus.
Finally, it should be noted that: the above description is only a preferred embodiment of the present invention, and is not intended to limit the scope of the present invention. Any modification, equivalent replacement, or improvement made within the spirit and principle of the present invention should be included in the protection scope of the present invention.
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种数据处理方法及装置